Linuxで停止したプロセスとは何ですか?


12

そのため、コマンドラインからいくつかのPHPスクリプトを実行していて、実行を停止したいと考えていました。

私は走った

$ ps aux | grep php
$ sudo kill 8754
$ sudo kill 8767

そして走った

$ ps aux | grep php

プロセスをチェックするために再び終了しましたが、この種の出力を得ました:

jon      8754  0.4 53.5 3044256 2205204 ?     T    10:34   0:15 php awesome_script.php
jon      8767  0.4 53.5 3044256 2205204 ?     T    10:34   0:15 php awesome_script.php
jon     12275  0.0  0.0   4156   892 pts/1    S+   11:27   0:00 grep --color=auto php

私はTが何を意味するのか見上げた状態の欄に、それが停止を意味することを発見し、私は手段というプロセスが何をしているかを理解していません。

PHPで独自のシグナル処理を作成できることはわかっていますが、それは行っていません。そのため、PHPがSIGTERMシグナルを受け取ったとき、それは何をしますか?

停止したプロセスは(もしあれば)何をしていますか?

回答:


15

これは、プロセスがSTOPシグナルを受信したことを意味し、シグナルを受信するまで何も実行せCONTず、終了すらしません。

STOPシグナルの最も一般的なソースは^z、プロセスがフォアグラウンドにあるときにユーザーが打つことであり、CONT後で送信する一般的な方法は、タイピングするfgbg、フォアグラウンドとバックグラウンドでそれぞれプロセスを続行することです。

STOPプロセスに送信する別の方法はkill -STOP $pidです。同様に、CONTを使用してプロセスに送信できますkill -CONT $pid

TERMプロセスにシグナルを送信したので、プロセスを終了させたいと思います。そのためには、プロセスがCONTシグナルを受信する必要があります。kill -CONT 8754 8767ターミナルウィンドウに入力して送信できます。


CONTシグナルを送信すると、スクリプトが完了するまでスクリプトを実行できますか?または、スクリプトがすぐに終了するのでしょうか?
Jon

CONTを受信すると、プロセスは(STOPの前に)何をしていたかを続行します。kill $pid停止中にTERMを(たとえば)送信した場合、そのTERMに(遅れて)応答して終了します。
エロエン2012

えーと、実行しkill 8754てTERMを送信したので、プロセスが最終的に終了するはずですよね?プロセスが終了するまでのプロセスの状態を知っていますか?プロセスがSTOP状態に入った場合、まるでからSTOPシグナルを受信したkill -STOP 8754かのように、TERMシグナルが送信された場合にも発生する可能性がありますか?
Jon

停止されたプロセスTERMは、継続されるまでシグナルにより終了しません。KILL停止中であっても、信号を受信すると即座に終了します。プロセスが終了すると、プロセスは実行状態になると思います。私はPHPに慣れていないので、プロセスが停止した理由を確認する方法がわかりません。ただし、一般に、プロセスは停止せず、を受信しTERMたときに終了します。
Eroen、2012年

4

Linux / Unixで停止されたプロセスは、中断されたときにカーネルに処理を実行しないようにカーネルに指示する中断信号(SIGSTOP/ SIGTSTP)を受け取ったプロセス/タスクであり、SIGCONTシグナルが送信された場合にのみ実行を再開できます。

基本的に停止されたプロセスは、中断されたプロセスがカーネルからのウェイクアップ状態を待つのと同様に、カーネルからの継続信号を待ちます。

Linuxカーネルプロセスの状態:Ready、Running、Stopped、Suspended、Traceed、Zombie

画像クレジット:polytechnique.fr


Linuxカーネルの各プロセスはtask_structデータ構造で表され、各taskベクトルはへのポインターの配列で構成されますtask_struct。システム内のプロセスまたはタスクを記述します(それはunrunnablerunnableまたはのいずれかstopped)。詳細については、「プロセスLinuxデータ構造」を参照してください。

参照:Linuxカーネル:プロセス管理


@Jusレポートをありがとう、修正しました。
ケノーブ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.