質問:ファイル/var/log/syslog
と/var/log/syslog.1
。
tr
- すべてのプロセスが同じになるようにプロセス番号を削除します。cut
- プロセス名のみを表示します。
uniq
そして、、sort
コマンドを使用する必要があるようですhead
。
ベストアンサー1
サービス名は、syslogログファイル(デフォルトのsyslog設定を持つUbuntuシステムにあります)の5番目の列にあります。通常servicename[pid]:
、たとえば、またはCRON[1233]:
などntpd[9283]:
で表されます。
5番目のフィールドを取得します。
awk '{ print $5 }' /var/log/syslog
このフィールドのすべてのアイテムを削除するには[
:
awk '{ sub("[[].*", "", $5); print $5 }' /var/log/syslog
これで、次のようなリストが表示されます。
dhclient
dhclient
dhclient
CRON
ntpd
CRON
CRON
ntpd
ここで並べ替えて数を数え、一番上にある項目を保持します。
awk '{ sub("[[].*", "", $5); print $5 }' /var/log/syslog |
sort | uniq -c | sort -rn | head -n 5
これは次のように出力できます。
27 dhclient
23 CRON
13 ntpd
(この特定のシステムには3つのサービスしかありません。)
数字を削除するには、でフィルタリングしますawk '{ print $2 }'
。
tr
とを使用することもできますが、cut
IMHOこれらのツールは操作に比べて「簡単すぎる」。cut
特に知っておくべきこと正確に切り取る区切り記号の数。列が複数の空白文字で区切られている場合は、cut
これを考慮する必要があります。