Hi I have searched various forums and here as well, I could find some answers for Linux and Mac but not able to find solution for Unix and specially Korn Shell.
How to get process name (command name) from process id (pid)
Below reference I found from SO This one And this one also
I tried below command
ps -eaf | awk '{ print substr($0, index($0, $9)) }'
Above command is failing at a point where TIME is given rather than Month and Date (because in this case there will be only 8 columns in string)
Any suggestion would help.
I think it is easier to use pgrep
$ pgrep bluetoothd
441
Otherwise, you can use awk
:
ps -ef | awk '$8=="name_of_process" {print $2}'
For example, if ps -ef
has a line like:
root 441 1 0 10:02 ? 00:00:00 /usr/sbin/bluetoothd
Then ps -ef | awk '$8=="/usr/sbin/bluetoothd" {print $2}'
returns 441
.
In ksh pgrep is not found. and the other solution is failing in case below is output from ps command jaggsmca325 7550 4752 0 Sep 11 pts/44 0:00 sqlplus dummy_user/dummy_password@dummy_schema
Let's check the last column ($NF
), no matter its number:
$ ps -ef | awk '$NF=="/usr/sbin/bluetoothd" {print $2}'
441
If you want to match not exact strings, you can use ~
instead:
$ ps -ef | awk '$NF~"bluetooth" {print $2}'
441
1906