2012-06-07 37 views
2

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

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

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

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

回答

3

在Bash中,ps -p $$ -o ppid=。输出是父进程的pid(调用进程)。拥有父pid,您可以从/proc/<pid>/cmdlinemore on procfs)读取其命令行。

3

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