GNU/Linux >> Linux の 問題 >  >> Linux

nohupプロセスを強制終了するプロセスIDを取得するには?

ジョブ -l nohupプロセスのリストのpidを提供する必要があります.kill (-9) それらを穏やかに.;)


VPS サーバー (および SSH - putty 経由) で Red Hat Linux を使用しています。

まず、実行中のすべてのプロセスを一覧表示します。

ps -ef

次に、最初の列にユーザー名が表示されます。次の 3 回見つけました:

  • 1 つは SSH 接続でした
  • 2 つ目は FTP 接続
  • 最後は nohup プロセスです

次に、2 列目に nohup プロセスの PID が表示されます。次のように入力するだけです。

kill PID 

(もちろん、PID を nohup プロセスの PID に置き換えます)

以上です!

この回答が、私も bash と SSH に非常に慣れていない人にとって役立つことを願っていますが、ここで必要な知識の 95% を見つけました:)


以下のコマンドで Ruby スクリプトをバックグラウンドで実行しているとします

nohup ruby script.rb &

次に、コマンド名を指定して、上記のバックグラウンド プロセスの pid を取得できます。私の場合、コマンドは ruby​​ です。

ps -ef | grep ruby

出力

ubuntu   25938 25742  0 05:16 pts/0    00:00:00 ruby test.rb

kill コマンドを使用してプロセスを簡単に強制終了できるようになりました

kill 25938

nohupを使用する場合 タスクをバックグラウンドに置くと、バックグラウンド オペレーター (& ) コマンド プロンプトで PID が表示されます。プロセスを手動で管理する計画がある場合は、その PID を保存し、後で必要に応じて kill PID を介してプロセスを強制終了するために使用できます。 または kill -9 PID (強制終了が必要な場合)。または、後で ps -ef | grep "command name" によって PID を見つけることができます。 そこからPIDを見つけます。 nohup に注意してください キーワード/コマンド自体は ps には表示されません 問題のコマンドの出力。

スクリプトを使用する場合、スクリプト内で次のようなことができます:

nohup my_command > my.log 2>&1 &
echo $! > save_pid.txt

これは my_command を実行します すべての出力を my.log に保存 (スクリプトでは、$! 最後に実行されたプロセスの PID を表します)。 2 標準エラーのファイル記述子 (stderr ) と 2>&1 標準エラー出力を標準出力にルーティングするようにシェルに指示します (ファイル記述子 1 )。 &1 が必要です 1 という名前のファイルではなく、そのコンテキストのファイル記述子であることをシェルが認識できるようにします。 . 2>&1 通常は標準エラーに書き込まれるエラー メッセージを my.log に取り込むために必要です。 ファイル (標準出力からのもの)。シェルでの I/O リダイレクトの処理の詳細については、I/O リダイレクトを参照してください。

コマンドが定期的に出力を送信する場合は、tail my.log で時々出力を確認できます。 、または「ライブ」でフォローしたい場合は、 tail -f my.log を使用できます .最後に、プロセスを強制終了する必要がある場合は、次の方法で実行できます:

kill -9 `cat save_pid.txt`
rm save_pid.txt

Linux
  1. Unix / Linux でプロセスのパスを取得するにはどうすればよいですか

  2. UNIX/Linux システムで実行中のプロセスにコマンドライン引数を渡す方法は?

  3. バックグラウンドプロセスのプロセスIDを取得するには?

  1. シェルスクリプトでフォークされた子プロセスから PID を取得する方法

  2. プロセス名でPIDを取得するには?

  3. プロセスの pid を取得し、シェル スクリプトで kill -9 を呼び出す方法は?

  1. Linuxでゾンビプロセスを強制終了する方法

  2. 開始したばかりのプロセスのpidを取得する方法

  3. 特定のプロセスの .pid ファイルを見つける方法