grep
像这样使用时:
ps aux | grep 'processname' | awk '{print $2}'
PIDs
返回进程数。processname
使用时:
ps aux | grep '^processname' | awk '{print $2}'
我正在尝试获取哪个命令行开头的过程processname
,但这行不起作用。
示例过程运行:
processname
other_processname
我想获得PID
第一个选项,因为processname
是命令的开始。
我还尝试了旗帜-E, -e, -w
,它们都返回相同的结果。
答案1
^
标记线的开始,而不是字段。
ps aux | grep ' processname'
将会更加接近,但它仍然可能给出一些误报。
由于其他列的宽度已固定,您也可以使用
grep '^.\{65\}processname'
在这里,^.\{65\}
从线的开头开始是65个字符。
由于您已经使用了尴尬,这可能是一个更好的选择:
ps aux | awk '{ if ($11 == "processname") print $2 }'
您还可以重新格式化 ps 的输出以使 grepping 更容易:
ps ax -o pid,args | grep '^[^ ]\+ processname'
Switch-o pid,args
仅显示PID和命令,该表达式^[^ ]\+
从阵容开始到第一个空间都与所有字符匹配。