By using ps aux | grep -i “name of your desired program”
the list of PID's appeared, but I found more PIDs than in the System Monitor.
How is this possible?
I did not find PIDs with -color =auto
in System Monitor.
By using ps aux | grep -i “name of your desired program”
the list of PID's appeared, but I found more PIDs than in the System Monitor.
How is this possible?
I did not find PIDs with -color =auto
in System Monitor.
When you run ps ... | grep ...
, both ps
and grep
are started together, and the output of ps
is fed to grep
asynchronously. So, by the time ps
scans the list of processes and prints the output, the grep
process is also active, and the output of ps
includes that grep
process as well.
Now, if you do a simple grep foo
, the output of ps
will contain grep foo
, and grep
will match that foo
:
$ ps aux | grep non-existent
muru 19042 0.0 0.0 10760 2224 pts/8 S+ 23:56 0:00 grep non-existent
Obviously, there's no process named non-existent
.
Instead of ps | grep
, use pgrep
for cleaner matching:
pgrep foo
Or ps
itself, if you know the name of the command:
ps -C foo
Why grep --color...
? Because Ubuntu defines an alias for grep
by default:
$ alias grep
alias grep='grep --color=auto'
This is also why you see silly tricks like:
ps ... | grep foo | grep -v grep
ps ... | grep '[f]oo'