檢查程式/腳本是否在啟動時執行?

檢查程式/腳本是否在啟動時執行?

在Linux中,我們可以修改許多檔案來新增啟動時執行的程式(/etc/rc.local、bashrc、bash_profile、$HOME/.config/autostart,...)?現在我有一個反向問題:我有一個程序,我可以檢查這個程序是否在啟動過程中運行嗎?

**注意:程式只能在啟動和退出時運行一次

答案1

你可以看看訪問時間對於腳本。這不是 100% 可靠(因為某些檔案系統可能已noatime設定)。但它通常對初始化腳本很有用,例如,

find /etc -type f -atime -1

我發現它很有用一段時間

答案2

pstree將為您提供以樹格式運行的進程的詳細輸出。

此處輸出範例

init─┬─auditd───{auditd} ├─crond ├─docker─┬─10*[bash] │ ├─docker───5*[{docker}] │ ├─docker───4*[{docker}] │ ├─2*[docker───3*[{docker}]] │ ├─start-app.sh─┬─java───40*[{java}] │ │ └─tail │ ├─start-app.sh─┬─java───81*[{java}] │ │ └─tail

答案3

您可以執行下一個命令:

ps aux | grep PROCESS_NAME

例如對於一個ping進程,結果將是:

user  9639  0.0  0.0   6508   732 pts/16   S+   08:44   0:00 ping 192.168.0.1
user  9641  0.0  0.1  12972  2420 pts/15   R+   08:44   0:00 grep --colour=auto ping

如果只得到第二行,則表示該行程沒有運作。

如果您懷疑該進程崩潰了,您可以使用atop,您可以找到另一個關於atop 這裡

答案4

我會查看初始化位置並查看程式是否設定在那裡運行。

老實說,如果程式以某種方式可以運行,但你不知道它是否運行,查看它是否運行的唯一機會是檢查它是否有運行的方式(例如在某些local.rc或此類中註冊),或者通過檢查結果(例如,程式總是接觸 file /home/someuser/a,並且沒有其他東西應該接觸它)。

以上假設您沒有任何日誌。

相關內容