2012-06-07 69 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的全部輸出。這將以樹形格式顯示所有進程(包括腳本)的列表,不僅顯示調用腳本的內容,還顯示和其他運行的內容。