Lastとgrepを使用して、月曜日にログインしたすべてのユーザーを一覧表示するコマンドまたはコマンドシーケンスを作成する必要があります。私はこれを思い出しましたが、成功しませんでした。
grep -i /var/log/wtmp | grep -i /var/log/wtmp |最終-t 20150731
答え1
last | grep -i Mon
(-i
私のように「Mon」を大文字で書く場合は、対応するオプションは必要ありません)
提案されたソリューションにはいくつかの問題があります。
パイプ
|
表記は、(パイプを介して)最初のプログラム(左)の標準出力を2番目のプログラム(標準入力)に送信します。だからあなたがすることgrep -i /var/log/wtmp
はの出力をlast -t 20150731
。ログイン情報が出力されるため、last
最初に来る必要があります。grep -i /var/log/wtmp
標準入力で「/var/log/wtmp」を探します(大文字と小文字を区別しません)。ファイルを検索できますが、grep
ファイルは検索したい項目の後に続きます(たとえば、grep find_me in_this_file
ファイルin_this_file
内の "find_me"文字列の検索)。ファイルが指定されていないので、標準入力を探します。最初(パイプ前)の場合、これはlast
;last
ただし、grep
最初の項目の場合は、Enterキーを押してコマンドを実行してから入力する内容です。grep
この場合、実際には「/var/log/wtmp」ではなく「Mon」検索を使用する必要があります。last
"/var/log/wtmp"を使用してください。しかし、興味があるのはデータを取得する場所ではなくgrep
出力だけです。last
last
last -t 20150731
2015年7月31日までのすべてのログイン情報が出力されます。 (7月31日を含めるには8月1日を日付として指定する必要があります。)唯一の問題は、last
日付にハイフンが必要であることです。〜しない限り合計時間(秒を含む)を指定します。したがって、ハイフンは必要ですlast -t 2015-07-31
が、ハイフンは必要ありませんlast -t 20150731000000
(両方とも同じ時間、真夜中を指定します)。スタート2015年7月31日)。元の質問には日付ごとにリストを制限する必要があるとは明記されていないため、上記の回答から除外します。日付別に制限する必要がある場合は、last -t 2015-07-31
7月30日(7月31日を除く)までのリストを使用してください。またはlast -t 2015-08-01
7月31日現在のリスト。
grep
詳細(正規表現とを使用してさまざまな時間形式で実行できるすべての楽しい作業を含む)については、およびlast
マニュアルページをご覧ください。man grep
man last
上記はログインを逆時間順(最も最近の順)で表示します。別のコマンドを追加して元の質問の制限を超えましたが、結果をコマンドgrep
にパイプしtac
て結果を時系列(最も最近の最後)として表示することもできますlast | grep -i Mon | tac
。
答え2
last | grep Mon | awk '{print $1}' | sort -u