2

コマンドを実行したユーザーの名前を取得したい(たとえばcat)。

fc -l現在のユーザーによって実行された最新のコマンドのリストを提供しますが、すべてのユーザーの履歴を見つける方法はありますか?マニュアルを読みましたが、役立つものが見つかりませんでした

この仕事をする他のコマンドを知っていますか?私も試しましwwho

私はこの解決策を見つけました。スーパーユーザーは、.bash_historyの「home」から各dirを検索し、そのファイルでそのコマンドのgrepを作成します。それは動作しますが、これは最適ですか?

4

1 に答える 1

1

を使用する=)

awk -v monitoredcmd=cat '
    $1~"^#[0-9]{10,}\s*$"{
        sub(/#/,"")
        tmpdate=$1
    }
    $1==monitoredcmd{
        "date -d @"tmpdate | getline date
        close("date -d @"tmpdate) 
        print "command [" $0 "] by",
            gensub(/\/home\/([^\/]+).*/, "\\1", "", FILENAME),
            at,
            date
    }
' /home/*/.bash_history

サンプル出力

command [cat file.txt] by sputnick  mer. févr. 13 15:34:44 CET 2013
command [cat l.py] by sputnick  mer. févr. 13 15:45:38 CET 2013
command [cat foobar.pl] by marc  mer. févr. 13 15:47:54 CET 2013
于 2013-03-17T19:03:15.890 に答える