web-dev-qa-db-ja.com

nohupで実行されているプログラムのリストを取得する方法

SSH接続でCentOS(Linuxディストリビューション)を実行しているサーバーにアクセスしています。常にログイン状態を維持できるわけではないため、「Nohup [command]&」を使用してプログラムを実行します。

Nohupを使い始めたすべてのプログラムのリストを取得する方法が見つかりませんでした。 「ジョブ」は、ログアウトする前にのみ機能します。その後、再度ログインすると、jobsコマンドは何も表示しませんが、プログラムがまだ実行されていることをログファイルで確認できます。

「Nohup」を使用して開始したすべてのプログラムのリストを取得する方法はありますか?

53
Nils De Winter

$ 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列。

説明

  • TTY列=プロセスに関連付けられた端末
  • STAT列=プロセスの状態
    • S =割り込み可能なスリープ(イベントの完了を待機)
    • l =マルチスレッドです(NPTL pthreadのようにCLONE_THREADを使用)

参照

$ man ps#次に/PROCESS STATE CODESを検索

84
prayagupd

Nohupの代わりに、screenを使用する必要があります。同じ結果が得られます-コマンドは「切り離されて」実行されます。ただし、スクリーンセッションを再開して「非表示」ターミナルに戻り、そのターミナル内の最近の進行状況を確認できます。

screenには多くのオプションがあります。ほとんどの場合、私はこれらを使用します:

最初のスクリーンセッションを開始するか、最新の切り離されたセッションを引き継ぐには:

screen -Rd 

現在のセッションからデタッチするには: Ctrl+ACtrl+D

複数の画面を起動することもできます-ドキュメントを読んでください。

23
mvp

「Nohup.out」への標準出力リダイレクトがある場合は、このファイルの使用者を確認してください。

lsof | grep Nohup.out
13
Victor Melnikov

Nohupで始まるコマンドのリストを正確に取得することはできませんが、コマンドps xを使用すると、他のプロセスとともにそれらを表示できます。 Nohupで始まるコマンドには、TTY列に疑問符が付きます。

4
Old Pro

Topコマンドを使用することもできます。ユーザーIDは実行中のジョブとその時間を示します。

$ top

(これにより、実行中のすべてのジョブが表示されます)

$ top -U [user ID]

(これにより、ユーザーIDに固有のジョブが表示されます)

3
Jcrow06