サーバーでRコンソールを実行しましたが、プロセスが予想よりはるかに長くかかりました。だからctrl + zで閉じようとしましたが、成功しませんでした。いよいよターミナルを閉じました。ただし、topコマンドを確認すると、プロセスはまだ存在します。私はkillを使用しましたが、プロセスを終了しません。親コマンド出力:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
27448 zhenyang 20 0 20.133g 0.020t 3.840g R 100.0 21.3 72:00.06 R
ホームページを確認してみると、ctrl+zを押すとプロセスがバックグラウンドに入りますが、fgコマンドが動作しないという方もいらっしゃいました。
誰でも助けることができますか?
答え1
コマンドを実行しkill
、プロセスIDを渡します(例:あなたの場合)。
kill 27448
デフォルトでは、これはプロセスを終了しますが、プログラムがシグナルハンドラを設定した後でも実行できます。プロセスが引き続き実行される場合は、以下を使用します。
kill -KILL 27448
(またはそれに対応するkill -9 27448
)。 KILL信号は捕捉できず、常にプロセスを終了します。 (たぶんすぐにはそうではないかもしれません。ただし、長い入力/出力を実行すると、プロセスは終了します。 )
答え2
CTRL
+はZ
プロセスを終了せずに実行を一時停止します(停止とも呼ばれます)。これはTSTP
、プロセスに信号を送信してCONT
再開できる信号をプロセスに送信することによって行われます。
kill -CONT <pid>
一時停止すると、プロセスは、信号を使用してプロセスが再開されるまで、デフォルトで送信される信号などのTERM
他の良好な信号に応答しません。この時点で、プロセスは保留中のすべての信号をただちに処理します。シグナルがプロセスを正常に終了する機会を与えずにすぐにプロセスを終了することは例外です。kill
CONT
KILL
kill -KILL <pid>
これは一般的に落胆プロセスが通常行う分解/クリーンアップ操作をスキップするためです。代わりにフォアグラウンドプロセスにCTRL+Z
。CTRL+C
これはINT
通常、(常にではないが)信号と同様の動作を有するプロセスに信号を送る。TERM
プロセスは正常に終了する必要があります。
Linux/bash プロセスのジョブ制御について詳しく読むことができます。ここ。