寻找哪个程序运行另一个

我有一个运行在似乎是Redhat Linux的有限版本上的NAS。 我遵循指示来破解它,所以我可以有shell访问,这是一个很大的帮助。 我也做了一些修改,其他人已经做了修改,除了一个问题,他们似乎都工作得很好。

不知何故,每隔22天,系统就会closures。 我用一个运行ps的脚本来查找shutdown实际上是被调用的,但是我不知道什么程序调用了shutdown。

如果我重命名/ sbin / shutdown,那么我可以编写一个脚本来replace它。 但是,我想要的最重要的信息是程序调用关机

如果一个程序运行我的脚本(phony / sbin / shutdown),我怎样才能找出什么程序叫我的脚本? 我希望能够从脚本内部,首先确定哪个程序称为脚本。 如果它更容易,我总是可以使用Perl脚本而不是bash脚本。

Solutions Collecting From Web of "寻找哪个程序运行另一个"

在Bash中, ps -p $$ -o ppid= 。 输出是父进程的pid(调用进程)。 有了父pid,你可以从/proc/<pid>/cmdline ( procfs上的更多 )读取它的命令行。

最简单的方法可能就是在脚本被调用时转储ps afx的全部输出。 这将以树形格式显示所有进程(包括脚本)的列表,不仅显示调用脚本的内容,还会显示调用脚本的内容,以及运行的内容。