Unixでユーザーコマンド履歴を確認するにはどうすればよいですか?


13

「history」コマンドは、Unix端末に入力したコマンドのリストを提供します。

現在システムにログオンしているすべてのユーザーのコマンド履歴を表示するにはどうすればよいですか?


プログラミング関連ではありません。superuser.comで質問することをお勧めします

情報を取得するための標準ツールはないため、プログラミング(少なくとも「スクリプト」の意味で)に関連していると思います。
IanH

回答:


11

現在ログインしているユーザーのリストを取得します/var/run/utmp(を参照man 5 utmp)。履歴は〜/ .historyに保存されるか、bashユーザーの場合は〜/ .bash_historyに保存されます。他のシェルは他の履歴ファイルを使用する場合があるため、実際にすべての情報を取得するのはそれほど簡単ではありません。

さらに、ユーザーが複数回ログインしている場合、.bash_historyファイルは常に信頼できるとは限りません。

utmpファイルを読み取るには、という「フロントエンド」whoがあります。そのため、現在ログインしているユーザーを反復処理するシェルスクリプトを作成することもできます。


2
現在の履歴はメモリに保持されます。履歴ファイルには、使用したものhistory -aまたは類似したもの、またはユーザーがシェルを終了したときに書き込まれた内容のみが表示されます。
追って通知があるまで一時停止しました。

2
この回答で指定されたファイル名は単なるデフォルトであることに注意してください。各ユーザーは自分の場所を設定できます(Joyの回答を参照)。ユーザーが異なるシェルを使用している場合、デフォルトではない別の場所(たとえば、〜/ mybashhist、〜/ histories / kshなど)に履歴を保存できます。また、そのようなユーザーデータのピークは法的な意味を持つ可能性があることに注意してください。
DevSolar

3
echo $HISTFILE

次に、そのファイルを表示します。


1
これは、以前にそのユーザーの環境を取得した場合にのみ機能します(ユーザーが別の環境に設定HISTFILEした可能性があるため)。
DevSolar
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.