找出在linux中用于运行进程的shell?
Find out the shell which was used to run the process in linux?
我最近陷入了一种情况,我需要找出进程列表的 shell
的名称(或者对于单个进程,使用 pid
)。有没有办法找到它(最好使用 ps
和 grep
命令)。
因为你知道进程是从shell开始的,你只需要找到parent进程的命令名,进程id可以使用[=15=获得],即。 G。使用输出格式控制选项 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)。参见 Looping Constructs。
构造 ${list[*]}
扩展到 list
中的所有元素;在 bash
如果 list
是一个数组变量(由例如 list=(1234 5678)
设置) 以及 如果 list
是一个简单的具有 white-space-separated 元素的变量(由例如 list="1234 5678"
设置)。参见 Shell Parameter Expansion and Arrays。
echo -n $pid:
输出e。 G。 1234:
没有换行符,因此下面的输出直接出现在 :
后面。参见 Bash Builtin Commands。
ps p$pid hoppid
进程选择选项 p
选择要显示其信息的进程,在本例中 $pid
。
输出修饰符 h
禁止打印列 header,e。 G。 PPID
.
输出格式控制选项 o
用于选择 ps
提供的信息,在本例中只是 ppid
,parent 进程 ID。
ps p`…` hocomm
前一个命令的输出(即 parent 进程 ID)替换了反引号命令,因此我们得到一个与上述命令非常相似的 ps
命令,这次带有 parent 被选中,它的命令名称被选择用于输出 comm
.
我最近陷入了一种情况,我需要找出进程列表的 shell
的名称(或者对于单个进程,使用 pid
)。有没有办法找到它(最好使用 ps
和 grep
命令)。
因为你知道进程是从shell开始的,你只需要找到parent进程的命令名,进程id可以使用[=15=获得],即。 G。使用输出格式控制选项 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)。参见 Looping Constructs。
构造 ${list[*]}
扩展到 list
中的所有元素;在 bash
如果 list
是一个数组变量(由例如 list=(1234 5678)
设置) 以及 如果 list
是一个简单的具有 white-space-separated 元素的变量(由例如 list="1234 5678"
设置)。参见 Shell Parameter Expansion and Arrays。
echo -n $pid:
输出e。 G。 1234:
没有换行符,因此下面的输出直接出现在 :
后面。参见 Bash Builtin Commands。
ps p$pid hoppid
进程选择选项 p
选择要显示其信息的进程,在本例中 $pid
。
输出修饰符 h
禁止打印列 header,e。 G。 PPID
.
输出格式控制选项 o
用于选择 ps
提供的信息,在本例中只是 ppid
,parent 进程 ID。
ps p`…` hocomm
前一个命令的输出(即 parent 进程 ID)替换了反引号命令,因此我们得到一个与上述命令非常相似的 ps
命令,这次带有 parent 被选中,它的命令名称被选择用于输出 comm
.