SSH接続でCentOS(Linuxディストリビューション)を実行しているサーバーにアクセスしています。常にログイン状態を維持できるわけではないため、「Nohup [command]&」を使用してプログラムを実行します。
Nohupを使い始めたすべてのプログラムのリストを取得する方法が見つかりませんでした。 「ジョブ」は、ログアウトする前にのみ機能します。その後、再度ログインすると、jobsコマンドは何も表示しませんが、プログラムがまだ実行されていることをログファイルで確認できます。
「Nohup」を使用して開始したすべてのプログラムのリストを取得する方法はありますか?
$ Nohup storm dev-zookeper
で始めたとき、
METHOD1:jobs
を使用して、
prayagupd@prayagupd:/home/vmfest# jobs -l
[1]+ 11129 Running Nohup ~/bin/storm/bin/storm dev-zookeeper &
METHOD2:ps
コマンドを使用
$ ps xw
PID TTY STAT TIME COMMAND
1031 tty1 Ss+ 0:00 /sbin/getty -8 38400 tty1
10582 ? S 0:01 [kworker/0:0]
10826 ? Sl 0:18 Java -server -Dstorm.options= -Dstorm.home=/root/bin/storm -Djava.library.path=/usr/local/lib:/opt/local/lib:/usr/lib -Dsto
10853 ? Ss 0:00 sshd: vmfest [priv]
?
=> Nohup
実行中のプログラムを含むTTY列。
説明
参照
$ man ps
#次に/PROCESS STATE CODES
を検索
Nohup
の代わりに、screen
を使用する必要があります。同じ結果が得られます-コマンドは「切り離されて」実行されます。ただし、スクリーンセッションを再開して「非表示」ターミナルに戻り、そのターミナル内の最近の進行状況を確認できます。
screen
には多くのオプションがあります。ほとんどの場合、私はこれらを使用します:
最初のスクリーンセッションを開始するか、最新の切り離されたセッションを引き継ぐには:
screen -Rd
現在のセッションからデタッチするには: Ctrl+ACtrl+D
複数の画面を起動することもできます-ドキュメントを読んでください。
「Nohup.out」への標準出力リダイレクトがある場合は、このファイルの使用者を確認してください。
lsof | grep Nohup.out
Nohup
で始まるコマンドのリストを正確に取得することはできませんが、コマンドps x
を使用すると、他のプロセスとともにそれらを表示できます。 Nohup
で始まるコマンドには、TTY列に疑問符が付きます。
Topコマンドを使用することもできます。ユーザーIDは実行中のジョブとその時間を示します。
$ top
(これにより、実行中のすべてのジョブが表示されます)
$ top -U [user ID]
(これにより、ユーザーIDに固有のジョブが表示されます)