2

我有一个 NAS 运行在似乎是 Redhat Linux 的有限版本上。我按照指示破解了它,这样我就可以访问 shell,这对我很有帮助。我还做了一些修改,其他人已经做过的修改,除了一个问题,它们似乎都运行良好。

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

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

如果一个程序运行我的脚本(假的 /sbin/shutdown),我如何找出调用我的脚本的程序?我希望能够从脚本中首先确定调用脚本的程序。如果它更容易,我总是可以使用 Perl 脚本而不是 bash 脚本。

4

2 回答 2

3

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

于 2012-06-07T03:59:23.670 回答
3

最简单的可能只是转储ps afx调用脚本时的完整输出。这将以树形格式显示所有进程(包括您的脚本)的列表,不仅显示调用脚本的内容,还显示调用that的内容以及正在运行的其他内容。

于 2012-06-07T04:31:23.440 回答