How to get pid given the process name

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 -efhas 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

Leave a Comment

Hata!: SQLSTATE[HY000] [1045] Access denied for user 'divattrend_liink'@'localhost' (using password: YES)