Logs
有沒有一種簡單的方法來記錄所有執行的命令,包括命令行參數?
我正在嘗試查找如何記錄特定的實例化,
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
以刪除所有審計規則。出於調試目的,用包裝腳本替換程序可以讓您更靈活地記錄環境、有關父程序的資訊等內容。