
在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
,並且沒有其他東西應該接觸它)。
以上假設您沒有任何日誌。