ジョブ -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