英文叫做
- process name
- 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_