繁体   English   中英

找出用于在Linux中运行该进程的shell?

[英]Find out the shell which was used to run the process in linux?

最近,我陷入了一种情况,我需要找出进程列表(或使用pid的单个进程)的shell名称。 有没有一种方法可以找到它(最好使用psgrep命令)。

由于您知道进程是从Shell启动的,因此您只需查找父进程的命令名称,即可使用ps获得其进程ID,例如,使用OUTPUT FORMAT CONTROL选项oppid

for pid in ${list[*]}; do echo -n $pid:; ps p`ps p$pid hoppid` hocomm; done
细节
 for pid in ${list[*]}; do …; done 

list每个元素执行一次命令 ,并将变量pid依次设置为每个元素(进程ID)。 请参见循环构造

构造${list[*]}扩展到list所有元素; bash如果list是数组变量(例如,由list=(1234 5678),并且 list是具有空格分隔元素的简单变量(例如,由list="1234 5678" ),则此方法有效。 请参见Shell参数扩展数组

ps p$pid hoppid

输出,例如1234:没有换行符,因此以下输出直接出现在:后面。 请参阅Bash内置命令

ps p`…` hocomm

进程选择选项p选择要为其显示信息的进程,在本例中$pid
输出修饰符h禁止打印列标题,例如PPID
输出格式控制选项o用于选择ps提供的信息,在本例中为ppid ,即父进程ID。

 ps p`…` hocomm 

先前命令的输出(即父进程ID)替换了反引号命令,因此我们获得了与上述命令非常相似的ps命令,这次选择了父命令,并通过comm选择了要输出的命令名称。

请参阅命令替换ps-报告进程状态

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM