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"
它什么都不返回!!!
答案 0 :(得分:0)
取决于您要查找的命令类型。
对于从shell运行的外部命令,“ps -efH”显示正在运行的进程的分层列表,然后您可以找到所需的信息。
bash内置命令没有出现在ps列表中,你必须使用“set -x”启用脚本调试,然后监视stderr以查看脚本正在做什么。
要回答您所做的修改: 虽然是内置的,所以它没有显示出来。但是“echo”将出现在我上面提到的“ps -efH”输出中。