What is a stopped process in linux?
Solution 1
It means the process has received a STOP
signal, and won't do anything much until it receives a CONT
signal, not even terminate.
The most common source of STOP
signals is the user hitting ^z
while the process is in the foreground, and the common way to send a CONT
afterwards is typing fg
or bg
which continue the process in the foreground and background respectively.
Another way to send STOP
to a process is kill -STOP $pid
. Similarly, CONT
can be sent to a process with kill -CONT $pid
.
Since you sent TERM
signals to the processes, I assume you want them to terminate. For that to happen, the processes must receive CONT
signals. You can send those by typing kill -CONT 8754 8767
in a terminal window.
Solution 2
The stopped process in Linux/Unix is a process/task which received suspend signal (SIGSTOP
/SIGTSTP
) which tells kernel to not perform any processing on it as it has been stopped, and it can only be resume its execution if it is sent the SIGCONT
signal.
Basically stopped process awaits a continuation signal from the kernel, similarly as suspended process awaits a wake-up condition from the kernel.
Image credits: polytechnique.fr
Each process in Linux kernel is represented by a task_struct
data structure and each task
vector consist array of pointers to every task_struct
. which describes a process or task in the system (either it's unrunnable
, runnable
or stopped
). See: Processes and Linux Data Structures) for more details.
See also: The Linux Kernel: Process Management
Related videos on Youtube
Jon
I am a Java and Javascript/Typescript developer mainly working with the Atlassian Cloud products.
Updated on September 18, 2022Comments
-
Jon over 1 year
So I had some PHP scripts running from the command line, and wanted to stop them running.
I ran
$ ps aux | grep php $ sudo kill 8754 $ sudo kill 8767
And then ran
$ ps aux | grep php
again to check the processes had terminated but got this kind of output:
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
I looked up what the T meant in the state column and discovered that it means Stopped, but I don't understand what that means the process is doing.
I know you can create your own signal handling in PHP, but I've not done that, so when PHP receives a SIGTERM signal what does it do?
What is a stopped process doing (if anything)?
-
Jon about 12 yearsWould sending a CONT signal allow the script to run until it had completed? Or would it cause the script to terminate immediately?
-
Eroen about 12 yearsThe process continues what it was doing (before STOP) upon receiving a CONT. If you sent a TERM (by
kill $pid
for example) while it was stopped, however, it will then (belatedly) respond to that TERM and terminate. -
Eroen about 12 yearsA stopped process will not terminate due to a
TERM
signal until it is continued. It will terminate immediately if it receives aKILL
signal, even while stopped. I assume a process will be in Run state when it terminates. I'm not very familiar with PHP, and don't know how to tell why a process stopped, sorry. Generally, though, processes don't stop but terminate when they receiveTERM
. -
kenorb about 4 years@Jus Thanks for report, I've corrected it.