所以我想知道,对于正在运行的进程,特定的进程只是一个分支,还是实际上是一个执行程序。
理想情况下,我试图识别那些是bash / sh内部命令的进程。我知道我不知道命令是什么,但是至少我不会打印出一些愚蠢的东西……
PID COMMAND PPID GID GROUP PGRP TPGID SID TGID
61860 `- -bash 61859 1004 gem 61860 91242 61860 61860
91242 `- /bin/bash ./silly.sh 1 2 3 61860 1004 gem 91242 91242 61860 91242
91243 `- cat 91242 1004 gem 91242 91242 61860 91243
91244 `- /bin/bash ./silly.sh 1 2 3 91242 1004 gem 91242 91242 61860 91244
因此,在内部,这个愚蠢的脚本将cat
传递到read
,并且read
是内部命令,但是我在这里看不到足够的信息来知道第二期bash silly
有点特别。是的,有pgrp id,但是cat具有相同的pgrp!
也许我可以确定grp id和命令行是相同的,并且指示内部命令,但是还有什么更好的方法吗?
我遇到的第二种情况更加棘手。这里的脚本文件没有shebang。否则,相同的脚本,相同的顶部输出,除了我首先创建了一个bash -v
shell:
PID COMMAND PPID GID GROUP PGRP TPGID SID TGID
61860 `- -bash 61859 1004 gem 61860 15761 61860 ..4..... 61860
15694 `- bash -v 61860 1004 gem 15694 15761 61860 ..4..... 15694
15761 `- bash -v 15694 1004 gem 15761 15761 61860 ..4...4. 15761
15762 `- cat 15761 1004 gem 15761 15761 61860 ..4..... 15762
15763 `- bash -v 15761 1004 gem 15761 15761 61860 ..4...4. 15763
因此,现在我有3个级联过程,全部都声称是bash -v
,这显然在任何报告中都是无稽之谈。我知道我所做的是运行一个脚本并运行一个内部命令,并且至少要说[internal / script],我想对它进行清理,但是我如何确定呢?
我已经挖了,除了PPID和GPID似乎没有很多线索
有什么想法吗?我在某处缺少旗帜吗?
我猜想,因为我对bash特别感兴趣,所以有可能使用bash或sh解决方案,而不是使用o / s解决方案?