トラブルシューティングのために、15秒ごとにPIDとそのコマンドを記録し、それをテキストファイルに書きたいと思います。
希望の出力:タイムスタンプ、PID、コマンド
答え1
これにより、必要な3つの列が提供されます。
$ ps -hopid,comm | perl -anle'print time, ", $F[0], $F[1]"'
1541626566, 6496, gedit
1541626566, 7513, bash
範囲を制限または拡張できますps
。どのプロセスがリストされています。次に、リダイレクトを使用してループに入れます。
while true; do echo x; sleep 15; done > out
選択したecho x
正しいコマンドとファイル名に置き換えてください。out
情報を生成するコマンドの概要は次のとおりです。
ps -hopid,comm
ps
- 明らかに-h
ヘッダーラインを閉じて-o
出力(PIDとコマンド)を示します。- これはPerlコマンド
perl -anle'print time, ", $F[0], $F[1]"'
Perlに移動しますperl
。-anle
したがって、これらのフラグは次のことを意味します。a
- 入力を配列にロードし、n
- 新しい行を処理し、l
- 各行を処理し、最後にe
- 隠しコードを実行します。 - これでコードは次のようになります
'print time, ", $F[0], $F[1]"'
。最初にタイムスタンプが印刷され、次に入力データを含む配列の最初の列、2番目の列が印刷されます。