
有沒有一種優雅的方式來記錄機器上所有 shell 中提交的每個命令?這是在一個不常用的 Ubuntu 伺服器的背景下進行的,我是該伺服器唯一的人類用戶。 (自動化系統使用多個使用者帳戶。)
我希望這是不引人注目且低開銷的,所以如果有一個簡單的方法涉及類似的東西,我會很高興script
。
答案1
自誕生之日起(實際上可以追溯到人們必須為他們使用的每個電腦週期實際支付真實費用的時代),Unix 及其克隆版本就內建了一個名為「進程記帳」(Process Accounting acct
)的系統。
acct
時至今日,這些功能仍然存在於大多數 Unix 和 Linux 系統中。
這個網站:http://www.cyberciti.biz/tips/howto-log-user-activity-using-process-accounting.html告訴您如何啟用它。
答案2
答案3
這是一個非常好的和快速的記錄所有 shell 命令的方法:
步驟1:
使用您最喜歡的文字編輯器開啟 /etc/bashrc 並在末尾新增以下行:
export PROMPT_COMMAND='RETRN_VAL=$?;logger -p local6.debug "$(whoami) [$$]: $(history 1 | sed "s/^[ ]*[0-9]\+[ ]*//" ) [$RETRN_VAL]"'
第2步:
透過在 /etc/syslog.conf 檔案中新增以下行,將 syslogger 設定為將 local6 擷取到記錄檔中:
local6.* /var/log/cmdlog.log
答案4
您可以使用蘇多什作為外殼包裝。它包括自動記錄您所做的一切,並且可以回放日誌檔案。請參閱其網站以了解更多信息。