命令履歴をアーカイブし、命令ごとに検索またはグループ化する方法はありますか?
つまり、過去3ヶ月間に実行されたすべてのgrepコマンドを一覧表示したいと思います。この機能は何とか可能ですか?
答え1
最も一般的なシェルbashを使用するとします。
history
.bash_history ファイルに保存されている履歴が表示されます。以下を追加して履歴サイズを増やし、日付を追加できます。
HISTSIZE=1000
HISTTIMEFORMAT="%Y/%m/%d %T "
.bashrc ファイルに。それではあなたはできます。
history | grep " 2019/0[1-3]"
Bashは対話型セッションで選択されたコマンドの履歴のみを保持します。すべてを追跡するには、カスタムシェルラッパー、リモートロギング、およびシステム全体のバージョン管理を使用することをお勧めします。
答え2
各コマンドを完了するには、いくつかの理由でbashの履歴に依存しません。これらのコマンドをsyslogサービス/デーモンに送信できます。
私はかつて安全なセントラルsyslogサーバーに保存されている200以上のDebianサーバーで1年以上実行されたコマンドログを持っていました。
/etc/bash.bashrc
私はすべてのユーザーを追加または追加するために単純な「トリック」を使用しました。 bash_profile は、次の行にのみユーザーに適用されます。
readonly PROMPT_COMMAND='history -a >(logger -t "cmdline $USER[$PWD] $SSH_TTY $SSH_CONNECTION")'
関連ビューBASHPIDを履歴に追加しますか?