コマンドの履歴に関するより詳細な情報をログに記録する方法を探していました。私の主な目的は、アプリケーションの問題をデバッグするときに大まかなサーバー タイムラインを作成するために発行されたコマンドの大まかなログを作成することです。 これは、非常に詳細な監査を目的としたものではありません。各コマンドに関する追加情報でログを強化するための優れた変更方法を提案するこの投稿 に出くわしました。ファイルに次を追加することをお勧めします。PROMPT_COMMAND
history
~/.bashrc
export PROMPT_COMMAND='hpwd=$(history 1); hpwd="${hpwd# *[0-9]* }"; if [[ ${hpwd%% *} == "cd" ]]; then cwd=$OLDPWD; else cwd=$PWD; fi; hpwd="${hpwd% ### *} ### $cwd"; history -s "$hpwd"'
PS1
これは、プロンプトが発行されたときにのみ発生することを除いて、非常にうまく機能します。非対話型シェルで動作するようにこれを強化する方法はありますか (正しい用語だと思います)。
たとえば、次のようにします。
ssh host "ls | grep home"
ls | grep home
onのエントリも作成しますが、これはプロンプトhost
を介して行われないため、リンクされたソリューションは不十分です。PS1
少し調べてみましauditd
た。これは素晴らしいユーティリティですが、詳細レベルは私が必要とする以上のものでした。history
ログをかなり簡単に解析できたかもしれませんが、パイプ、リダイレクト、ループは、すでに報告されているものとかなり似たものに正気で再構築するのは悪夢になります。