Unix 如何在给定进程名称的情况下获取pid
您好,我搜索了各种论坛,在这里,我也可以找到一些关于Linux和Mac的答案,但无法找到Unix和Korn Shell的解决方案 如何从进程id(pid)获取进程名(命令名) 下面是我从SO找到的参考资料 我试着服从命令Unix 如何在给定进程名称的情况下获取pid,unix,ksh,pid,ps,Unix,Ksh,Pid,Ps,您好,我搜索了各种论坛,在这里,我也可以找到一些关于Linux和Mac的答案,但无法找到Unix和Korn Shell的解决方案 如何从进程id(pid)获取进程名(命令名) 下面是我从SO找到的参考资料 我试着服从命令 ps -eaf | awk '{ print substr($0, index($0, $9)) }' 上述命令在给定时间而不是月份和日期时失败(因为在本例中,字符串中只有8列) 任何建议都会有帮助。我认为它更容易使用 否则,您可以使用awk: ps -ef | awk '
ps -eaf | awk '{ print substr($0, index($0, $9)) }'
上述命令在给定时间而不是月份和日期时失败(因为在本例中,字符串中只有8列)
任何建议都会有帮助。我认为它更容易使用 否则,您可以使用
awk
:
ps -ef | awk '$8=="name_of_process" {print $2}'
例如,如果ps-ef
有一条类似以下的线:
root 441 1 0 10:02 ? 00:00:00 /usr/sbin/bluetoothd
然后返回441
在ksh中找不到pgrep。另一个解决方案是以防万一失败 以下是ps命令JAGGSMCA325755047520SEP11 pts/44的输出 0:00 sqlplus虚拟用户/虚拟用户_password@dummy_schema 让我们检查最后一列(
$NF
),无论其编号如何:
$ ps -ef | awk '$NF=="/usr/sbin/bluetoothd" {print $2}'
441
如果要匹配不精确的字符串,可以使用~
:
$ ps -ef | awk '$NF~"bluetooth" {print $2}'
441
1906
如果您的
ps | awk
解决方案失败,因为ps
的输出不是您想要的,那么请执行以下操作:
ps -eaf -o pid,cmd | awk '/regex-to-match-command-name/{ print $1 }'
您可以使用获取名为p\u name
的正在运行进程的所有ID:
p|u name | tr''\n'
(用于垂直列表)
p\u name
-终止所有名为p\u name
确保你有权限杀死他们:)ps-C-o etime=
我的ps来自procps ng。不,我想从进程名中获取pid,标题中的输入错误。此问题非常特定于您的unix版本,与shell几乎没有关系。请包括
uname-a
的输出。对于碰巧发现这一点的Mac用户,另请参阅。它说ps:Inlable option--ops
根据您的平台而有所不同(但我认为-o
是标准的)。查看文档以了解如何操作输出字段。(man ps
)ps
还支持o
(无-
)和--格式,具体取决于您的平台。在ksh中找不到pgrep。另一个解决方案在以下情况下失败,即从ps命令输出jaggsmca325 7550 4752 0 Sep 11 pts/44 0:00 sqlplus dummy_user/dummy_password@dummy_schema
我尝试了您的解决方案,该解决方案非常有效,但在进程名称下面有空格时失败了,如ps-eaf | awk'$NF==“社会保障署:jaggsmca325@pts/53“{print$2}”有任何指向该问题的指针吗?是的,我想得到匹配的确切进程名称。@gahlot.jaggs当我使用$NF
时,您也可以使用$(NF-1)
等。因此您可以使用$(NF-1)=“sshd:&$NF=”jaggsmca325@pts/53“
感谢您的所有努力,但我不知道在运行时我将拥有多少令牌,因此我不能使用$(NF-1),否则它将仅修复为N-1,并且在其他情况下将失败。是否有任何方法可以通过使用进程名称而不是使用ps来查找进程id-eaf@gahlot.jaggs您还可以grep“process$”
,因为$
表示行尾。然后将字符串给awk以打印第二条记录。我还使用ps-C-o user=|head-1
来获取进程所有者(用户)对超过15个字符的进程名称的pidof works
ps -eaf -o pid,cmd | awk '/regex-to-match-command-name/{ print $1 }'
ps -C <the-name> -o etime=