人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

CentOSでhistoryコマンドを使うと過去に実行したコマンドの一覧が出力されますが(.bash_historyの内容だと思いますが)、コマンド実行の日時とどのディレクトリで実行したか、のログは残っているでしょうか?また、デフォルトで残っていない場合、それらのログを残すことは可能でしょうか?

●質問者: koime_ryokutya
●カテゴリ:コンピュータ インターネット
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● JULY
ベストアンサー

実行日時は、HISTTIMEFORMAT という環境変数を設定すると可能です。
Hack 50. HISTTIMEFORMAT を使用して履歴に TIMESTAMP を表示する - bobchinの日記

カレントディレクトリは... とりあえず、直接的にはそういった機能は無さそうですが、シェルスクリプトを組み合わせて頑張ると出来るようです。

Supplementary Command History Logging in Bash: Tracking Working Directory, Date/Times, etc. | Jeet Sukumaran
私自身で試したり、中身をきちんと理解できている訳では無いですが、hh というエイリアスを定義していて、これを呼び出すと、タイムスタンプとその時のカレントディレクトリが表示出来るようになっているみたいです。


koime_ryokutyaさんのコメント
回答ありがとうございます。日時の表示は出来ました。(下部のシェルスクリプトの方はまだ試していません) 追加の質問になってしまい、申し訳ないのですが、.bash_historyのファイルの中身を見ると実行日時のデータは入っていないように思えるのですが、どこから日時の情報を持ってきているのでしょうか?

JULYさんのコメント
元々、.bash_history のファイルに書き出されるまでには、タイムラグがあります。 http://linuxjm.sourceforge.jp/html/GNU_bash/man1/bash.1.html 上記ページの「履歴 (HISTORY)」の章を読むと「対話的なシェルが終了する際には、最近の HISTSIZE 個の行が履歴リストから HISTFILE にコピーされます。」と書かれています。つまり、通常は bash のプロセスがオンメモリーで内容を保持し、終了時に .bash_profile へ書き出す、という動きになります。 なので、環境変数を設定した直後の .bash_profile の内容を見ても、タイムスタンプらしき物は見つかりませんが、一度、ログアウトしてから再度ログインすると、「#1323061139」という行が入っているのが分かります。

koime_ryokutyaさんのコメント
コメントありがとうございます。 たしかに、#**という行が入ってますね。多分これがタイムスタンプの情報なのですね。ありがとうございます。
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ