我正在嘗試記錄用戶在Linux(任何發行版)操作系統中打開/關閉的應用程序。每當應用程序(如firefox等)打開和關閉時,是否有執行腳本(Java,Python等)的方法?如何在Linux的每個應用程序的開始和結束處執行腳本?
回答
作爲一般功能 - 沒有。
執行一個腳本來記錄執行,本身就是一個需要記錄的程序執行,因此你會有一個遞歸問題。但是,如果你想記錄特定的程序,你可以實現一個shell腳本來代替這些特定程序的可執行文件(firefox,python等),然後在那個shell腳本中你可以在調用實際的日誌之前記錄執行程序。
然而
- 用戶仍然能夠調用原始程序沒有日誌記錄,如果他們知道的路徑。
- 新腳本將是一個安全問題(使系統不太安全),因此不會被推薦。
所以總之,一個壞主意。
+1,因爲問題的遞歸性質。不知道會運行什麼,但它會運行,每次應用程序將運行,並咀嚼所有的內存很快 – Fallenreaper
是的,我想到了。但就像你說的,不是萬無一失的。 無論如何,我可以使用「pstree」命令可能使用什麼? 或添加一些東西到init本身(這是可能的嗎?) – user1836386
init只是一個程序(可能現在有點特殊的程序,但只是一個程序),其中分叉進程 - 這裏沒有魔法。pstree只是從/ proc和/或/ sys這是一個只讀的數據 - 確保你可以監控,但不能保證你能夠足夠快地查看所有隻存在於瞬間的程序 - 而且你也會在那裏看到你自己的日誌程序。 – Soren
這不是一個編程問題,但仍然是。
你實際上可以做到這一點。見https://superuser.com/questions/222912/how-can-i-log-all-process-launches-in-linux
有很多答案。例如,您可以使用auditd。
- 1. 使用Hive腳本的每個開始/結束對的處理時間跨度
- 2. 在shell腳本執行程序的linux
- 3. Yii的,我怎麼結束的Yii應用程序的執行沒有結束PHP腳本執行
- 4. asp.net應用程序的開始和結束事件序列
- 5. 如何在linux中執行每個登錄用戶的程序?
- 6. 如何使用ctime標記程序的開始和結束點?
- 7. 主題結束和應用程序在哪裏開始?
- 8. 在從2到結束的每一行的開始處插入文本 - 5
- 9. Xamarin.IOS應用程序保持開始和結束許多線程
- 10. 如何在Magento訂單流程結束時執行腳本?
- 11. 如何在文本的開始和結尾處對mySQL執行REPLACE?
- 12. Linux - 獲取線程的堆棧內存的開始和結束
- 13. 使用開始,過程,結束在腳本塊
- 14. 在開始和結束的每行添加空格C#
- 15. 如何在Symbian中獲取應用程序開始和結束時間
- 16. 如何找到每個黑色條的開始和結束行號?
- 17. 如何獲取每個過程的開始時間和結束時間?
- 18. 在rails應用程序重啓時執行腳本的腳本
- 19. Android應用程序開始和結束事件
- 20. postgress:SQLQuery:每週開始和結束日期
- 21. Linux,Bash在產生進程結束後在腳本中執行命令
- 22. 結束應用程序(遊戲)並退出或開始新的應用程序
- 23. 獲取開始和結束的行數
- 24. 當用戶按下打印時運行腳本,並且在腳本結束前不開始假脫機(linux,cups)
- 25. 如何將一些文本添加到數組中的每個元素的開始和結束處
- 26. 在開始和結束點(!)
- 27. 通話結束後的應用程序開始
- 28. 如何在linux ssh上執行腳本...?
- 29. 如何在Linux中執行python腳本?
- 30. 執行腳本ASP.NET應用程序
那麼,你在做什麼?你有沒有試過Shell腳本,或者是什麼? – Fallenreaper
我知道的是每個進程從init(或其子)分叉。所以我想知道如何利用這個事實在fork之前和進程被銷燬之後運行一個小的日誌腳本。 – user1836386
你知道成千上萬的應用程序/可執行文件會定期執行,包括維護應用程序等。我不確定你的目標是記錄每一個應用程序或某些應用程序。 – Fallenreaper