英文叫做

  1. process name
  2. command line

在pgrep、pkill处理进程的时候,需要注意process name最多15个字符,所以有时可能匹配不到,

root@mdl-dev01:~# ps -elf | grep feeder
5 S root     21004     1 62  80   0 - 567610 futex_ Mar18 ?       13:01:20 ./feeder_handler1
1 S root     21069     1 19  80   0 - 728090 futex_ Mar18 ?       04:05:21 ./feeder_handler2
5 S root     21220     1  1  80   0 - 287844 futex_ Mar18 ?       00:14:21 ./feeder_handler_bar
0 S root     31789 31592  0  80   0 -  3235 pipe_w 13:34 pts/1    00:00:00 grep --color=auto feeder
root@mdl-dev01:~# pgrep -x feeder_handler1
21004
root@mdl-dev01:~# pgrep -x feeder_handler2
21069
root@mdl-dev01:~# pgrep -x feeder_handler_bar
root@mdl-dev01:~# 

可见feeder_handler_bar没有命中,而pgrep的manpage里面明确指出:

		The process name used for matching is limited to the 15 characters present in the output of /proc/pid/stat.  Use the -f option to match  against  the  complete  command  line,
       /proc/pid/cmdline.

这时候需要用pgrep -f才行。

root@mdl-dev01:~# pgrep -f feeder_handler_bar
21220
root@mdl-dev01:~# pgrep -lf feeder
21004 feeder_handler1
21069 feeder_handler2
21220 feeder_handler_