If you call the top command, you get all the running processes. But how can I limit the output only to a certain process name like \"java\"?
I\'ve
Use the watch command
watch -d 'top -n1 | grep mysql'
get pid of process:
# pidof <process>
tell top what process pid(s) to display
# top -p <pid1>,<pid2>, etc
example:
landis@linux-e6510:~>pidof konsole
1841 1709
landis@linux-e6510:~>top -p 1841,1709
Top will only display the 2 'konsole' processes. This is useful on a busy server via ssh, not having to pipe thru grep.
I run it (eg.): top -b | egrep -w 'java|mysqld'
I prefer the following so I can still use top interactively without having to look up the pids each time I run it:
top -p `pgrep process-name | tr "\\n" "," | sed 's/,$//'`
Of course if the processes change you'll have to re-run the command.
Explanation:
pgrep process-name
returns a list of process ids which are separated by newlinestr "\\n" ","
translates these newlines into commas, because top wants a comma-separated list of process idssed
is a stream editor, and sed 's/,$//'
is used here to remove the trailing commahow about top -b | grep java
Expanding on @dogbane's answer, you can get all the PIDs for a named process with pgrep
to do the following:
top -p "$(pgrep -d ',' java)"