Logs

有沒有一種簡單的方法來記錄所有執行的命令,包括命令行參數?

  • August 10, 2021

我正在嘗試查找如何記錄特定的實例化,rrdtool以查看它接收的路徑是否不正確。

我知道我可以將執行檔包裝在一個記錄參數的 shell 腳本中,但我想知道是否有更特定於核心的方法來監控它,也許是一個文件系統回調,它可以查看特定的 /proc/pid/exe匹配給定的二進製文件?

是的,有一個核心工具:審計子系統。守護auditd程序進行日誌記錄,命令auditctl設置日誌記錄規則。您可以記錄對特定係統 alls 的所有呼叫,並進行一些過濾。如果要記錄所有執行的命令及其參數,請記錄execve系統呼叫:

auditctl -a exit,always -S execve

要專門跟踪特定程序的呼叫,請在程序執行檔上添加過濾器:

auditctl -a exit,always -S execve -F path=/usr/bin/rrdtool

日誌顯示在 中/var/log/audit.log,或者您的發行版放置它們的任何位置。您需要成為 root 才能控制審計子系統。

完成調查後,使用相同的命令行 with-d而不是-a刪除日誌記錄規則,或執行auditctl -D以刪除所有審計規則。

出於調試目的,用包裝腳本替換程序可以讓您更靈活地記錄環境、有關父程序的資訊等內容。

引用自:https://unix.stackexchange.com/questions/84847