2013-04-22 46 views
2

在我的一臺Linux服務器上,我有一個執行一些控制的腳本。 有沒有辦法找出這個腳本被調用的地方?這可以在 另一個腳本,cobol程序,crontab,... 打開他們每一個將需要很長時間。是一個叫做某處的腳本

+0

您可以通過'ps -ef | grep your_script'。 – fedorqui 2013-04-22 12:57:32

+0

然後我只會看到正在運行的進程。這些腳本運行不到一分鐘。我認爲它只能每天或每週運行一次。 – pistach 2013-04-22 12:59:53

+0

對此有任何猜測嗎?名稱,涉及的文件,用戶執行它? – fedorqui 2013-04-22 13:00:36

回答

0

grep的吧:

  • grep -lr yourscript/etc/opt/anotherlikleydir

  • 做不到這一點,搜索整個系統:grep的-lr yourscript/

編輯:

  • 做不到這一點,在二進制搜索過:grep的-lar yourscript/

  • 如果沒有這樣做,該腳本要麼由登錄用戶執行,要麼由腳本遠程登錄執行......如果是這種情況,請嘗試peachykeen的方法並編輯腳本...以及爲什麼不轉儲ps axf也是一個日誌。

+0

作爲一個方面說明:這是非常微不足道的unix東西。你可能應該投資一本好的初學者書,或者因爲你似乎負責運行服務器,找一個培訓課程。 – KarlP 2013-04-22 13:31:48

+0

他想找到對腳本的引用,而不是實際的腳本。 – KarlP 2013-04-23 10:06:38

1

如果你可以修改腳本,放在一個ps線獲取父PID,ps再次和grep父PID得到命令,然後登錄到文件。

回來一個星期左右,你應該有觸發你的腳本的命令。如果它是嵌套的東西,你可能想要遞歸或相似。

要做到這一點而不修改腳本,您需要一個觀察者腳本/程序來檢查對腳本文件的訪問,或者每隔一段時間調用ps。但是,如果您有這種訪問權限,只需修改腳本可能會更容易。

編輯:顯然的命令來獲得它的父PID和命令,沒有一邊喊ps,看起來像:

ps -p $$ -o ppid= 
cat /proc/<pid>/cmdline 

from jweyrich's answer here