Wednesday, May 8, 2024
46
rated 0 times [  46] [ 0]  / answers: 1 / hits: 313134  / 2 Years ago, sat, april 23, 2022, 2:21:01

I want to check the particular process in already running or not.



I refereed this Q&A.



But I didn't get any specific solution. Following is the example that I tried:
I have created abc.sh file and run this script on background, like sh abc.sh &.



Now this file is running on background and I fire the ps aux | grep "abc" command.



Following is the output of this command:



prakash     3594  0.0  0.0   4388   820 pts/0    S+   16:44   0:00 grep --color=auto abc


After that I stop the abc.sh running script and fire the same command ps aux | grep "abc" command.



But I am getting same output like:



prakash     3594  0.0  0.0   4388   820 pts/0    S+   16:44   0:00 grep --color=auto abc


Is there any other way to find the process is running or not?


More From » command-line

 Answers
7

Every process will be listed in the output of ps aux; whether running, sleeping, zombie or stopped.



However, in your case, since you ran the process using sh abc.sh, sh is the application(shell) that is running and not abc.sh. Hence, ps aux will not contain the process abc.sh because of which grep could not yield any result.



So, the correct way you should have used it is as:



ps aux | grep sh


This may also return you other process that are running having the string sh anywhere in their output of ps aux.



You should note that the process will be "running" when the output of ps aux has its STAT as R. If it is something other than that, it is not running at the instance you fired the command to check the running processes. The different process states can be found in the man page for ps:



D    uninterruptible sleep (usually IO)
R running or runnable (on run queue)
S interruptible sleep (waiting for an event to complete)
T stopped, either by a job control signal or because it is being traced
W paging (not valid since the 2.6.xx kernel)
X dead (should never be seen)
Z defunct ("zombie") process, terminated but not reaped by its parent


You could as well run the top command to check if the process is running or sleeping and the amount of CPU, RAM it is consuming. (This will again list your process as sh).



However, if you do want your process to be listed as abc.sh, then you should have the first line of the script you are running as:



#!/bin/sh


so that the shell will know what application to use to run the script(sh in this case, change it to #!/bin/bash for bash) and then provide executable permissions to the process using:



chmod +x /path/to/abc.sh


replacing /path/to/ with the location of the abc.sh file and then run abc.sh using



/path/to/abc.sh


again replacing /path/to/ with the location of the abc.sh file.


[#24924] Sunday, April 24, 2022, 2 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
algicuade

Total Points: 317
Total Questions: 89
Total Answers: 106

Location: Saint Pierre and Miquelon
Member since Fri, Jan 28, 2022
2 Years ago
;