什么是Linux中的停止进程?

Jon*_*Jon 13 linux command-line php

所以我从命令行运行了一些 PHP 脚本,并希望停止它们运行。

我跑了

$ ps aux | grep php
$ sudo kill 8754
$ sudo kill 8767
Run Code Online (Sandbox Code Playgroud)

然后跑了

$ ps aux | grep php
Run Code Online (Sandbox Code Playgroud)

再次检查进程已终止但得到了这种输出:

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
Run Code Online (Sandbox Code Playgroud)

我在 state 列中查找了 T 的含义,发现它表示已停止,但我不明白这意味着进程正在做什么。

我知道你可以在 PHP 中创建你自己的信号处理,但我没有这样做,所以当 PHP 收到一个SIGTERM 信号时它会做什么?

停止的进程在做什么(如果有的话)?

Ero*_*oen 16

这意味着该进程已收到STOP信号,并且在收到信号之前不会做任何事情CONT,甚至不会终止。

最常见的STOP信号源是用户^z在进程处于前台时点击,CONT之后发送的常见方式是键入fgbg分别在前台和后台继续进程。

发送STOP到进程的另一种方法是kill -STOP $pid. 同样,CONT可以发送到一个进程kill -CONT $pid

由于您向TERM进程发送了信号,我假设您希望它们终止。为此,进程必须接收CONT信号。您可以通过kill -CONT 8754 8767在终端窗口中键入来发送这些信息。