如何查找/ bin / bash进程执行的命令? (Linux)的

时间:2018-04-05 12:51:32

标签: linux process monitoring proc

TL; DR: 我想在/ bin / bash进程中运行命令(如果正在运行)。

我想要一个可以在/ bin / bash进程中识别/ bin / bash命令正在运行的脚本。试图在/ proc / [pid] / cmdline中找到它,但它只显示/ bin / bash。

有没有办法做到这一点,或者我想要的是不可能的。 :o

我问,因为当我运行ps -ef时,某些进程(如ssh)会显示它们是如何运行的。

user      30410 30409  0 10:58 pts/0    00:00:00 ssh name@127.0.0.1  <-- here

完全打印了ssh命令。

如果我执行命令ps -ef | grep "/bin/bash",我们可以看到相同的内容,它返回:

user     20080  4999  0 13:40 pts/9    00:00:00 grep /bin/bash  <-- here

打印命令grep / bin / bash。

但如果我运行像while true; do echo "hello"; done这样的bash循环 然后我做ps -ef | grep "while"它什么都不返回!!!

1 个答案:

答案 0 :(得分:0)

取决于您要查找的命令类型。

对于从shell运行的外部命令,“ps -efH”显示正在运行的进程的分层列表,然后您可以找到所需的信息。

bash内置命令没有出现在ps列表中,你必须使用“set -x”启用脚本调试,然后监视stderr以查看脚本正在做什么。

要回答您所做的修改: 虽然是内置的,所以它没有显示出来。但是“echo”将出现在我上面提到的“ps -efH”输出中。