Linux · 2013/04/12 0

通过 ps 指令获得指定进程名称的 pid

通过 ps 指令获得制定进程名称的 pid 步骤如下:

1. 打印出全部进程的, 进程名称以及pid

ps -ef

大概会得到类似如下结果:

UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 09:01 ?        00:00:00 /sbin/init
root         2     0  0 09:01 ?        00:00:00 [kthreadd]
root         3     2  0 09:01 ?        00:00:00 [ksoftirqd/0]
root         5     2  0 09:01 ?        00:00:00 [kworker/u:0]
root         6     2  0 09:01 ?        00:00:00 [migration/0]
root         7     2  0 09:01 ?        00:00:00 [watchdog/0]
root         8     2  0 09:01 ?        00:00:00 [migration/1]
root        10     2  0 09:01 ?        00:00:00 [ksoftirqd/1]
root        12     2  0 09:01 ?        00:00:00 [watchdog/1]

2. 过滤出指定的进程名称

ps -ef | grep mysqld

大概会得到类似如下结果:

mysql      841     1  0 09:01 ?        00:00:02 /usr/sbin/mysqld
xwsoul    4532  4205  0 11:16 pts/0    00:00:00 grep --color=auto mysqld

3. 这样就会多出一行我们刚刚的 grep mysqld 的结果, 因此我们要忽略该指令

ps -ef | grep mysqld | grep -v 'grep '

大概会得到类似如下的结果:

mysql      841     1  0 09:01 ?        00:00:02 /usr/sbin/mysqld

4. 使用 awk 打印出pid号

ps -ef | grep mysqld | grep -v 'grep ' | awk '{print $2}'

大概会得到类似如下的结果:

841

同样的如果像获得进程的父进程号(ppid), 可按如下操作:

ps -ef | grep mysqld | grep -v 'grep ' | awk '{print $3}'