2012年10月14日日曜日

vmstatやtopコマンドに時間を表示する方法


定期的に結果を出力するコマンドに時間を表示させる方法です。
パフォーマンステストの状況確認を行う場合に便利かも。

OS: CentOS 6.3(64-bit)
vmstat: 3.2.8
top: 3.2.8


■vmstatに時間を表示させる
[root@cent63 ~]# vmstat 1 3 | awk '{print strftime("%Y/%m/%d %H:%M:%S"), $0}' 2012/10/14 21:45:58 procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu----- 2012/10/14 21:45:58 r b swpd free buff cache si so bi bo in cs us sy id wa st 2012/10/14 21:45:58 1 0 4832 99536 115484 398552 0 0 0 1 9 3 0 0 100 0 0 2012/10/14 21:45:59 0 0 4832 99520 115484 398552 0 0 0 0 48 85 0 1 99 0 0 2012/10/14 21:46:00 0 0 4832 99520 115484 398552 0 0 0 0 51 82 1 0 99 0 0 [root@cent63 ~]#
perlを使う方法もあります。
[root@cent63 ~]# vmstat 1 3 | perl -MPOSIX -pe 'BEGIN{$|=1} print strftime q{%Y/%m/%d %H:%M:%S }, localtime' 2012/10/14 21:46:08 procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu----- 2012/10/14 21:46:08 r b swpd free buff cache si so bi bo in cs us sy id wa st 2012/10/14 21:46:08 1 0 4832 99536 115484 398552 0 0 0 1 9 3 0 0 100 0 0 2012/10/14 21:46:09 0 0 4832 97412 115496 398980 0 0 440 0 170 175 5 3 72 20 0 2012/10/14 21:46:10 0 0 4832 97412 115496 398980 0 0 0 0 50 85 0 0 100 0 0 [root@cent63 ~]#

■topに時間を表示させる
[root@cent63 ~]# top -n 1 -b | head -5 | awk '{print strftime("%Y/%m/%d %H:%M:%S"), $0}' 2012/10/14 21:48:17 top - 21:48:17 up 43 days, 3 min, 2 users, load average: 0.00, 0.00, 0.00 2012/10/14 21:48:17 Tasks: 160 total, 1 running, 159 sleeping, 0 stopped, 0 zombie 2012/10/14 21:48:17 Cpu(s): 0.1%us, 0.1%sy, 0.0%ni, 99.8%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st 2012/10/14 21:48:17 Mem: 1020644k total, 922124k used, 98520k free, 115500k buffers 2012/10/14 21:48:17 Swap: 2064376k total, 4832k used, 2059544k free, 398980k cached [root@cent63 ~]#

いろいろと応用が利くかも…。またしても小ネタですみません。

2012年10月13日土曜日

grepコマンドでコメント行と空白行を非表示にする


grepコマンドを利用してでコメント行と空白行を非表示にする方法です。
httpd.confやsmb.conf等の設定ファイルはやたらとコメント文が多いので
それらを非表示にしてズバリ設定内容だけ確認したい場合に便利です。

OS: CentOS 6.3(64-bit)
grep: 2.6.3


■コメント行と空白行を非表示
[root@cent63 ~]# grep -v "^#\|^$" /etc/httpd/conf/httpd.conf ServerTokens OS ServerRoot "/etc/httpd" PidFile run/httpd.pid Timeout 60 KeepAlive Off MaxKeepAliveRequests 100 KeepAliveTimeout 15 (以下省略)
「#」で始まるコメント行を非表示 → 「^#」
空行を非表示 → 「^$」

■コメント前にタブがあっても非表示にする
[root@cent63 ~]# grep -v "^[^t]*#\|^$" /etc/httpd/conf/httpd.conf ServerTokens OS ServerRoot "/etc/httpd" PidFile run/httpd.pid Timeout 60 KeepAlive Off MaxKeepAliveRequests 100 KeepAliveTimeout 15 (以下省略)
これだと前述となんら変わらないように見えるので、出力行数で確認
[root@cent63 ~]# grep -v "^#\|^$" /etc/httpd/conf/httpd.conf | wc -l 238 [root@cent63 ~]# grep -v "^[^t]*#\|^$" /etc/httpd/conf/httpd.conf | wc -l 225 [root@cent63 ~]#
確かにタブの後に#がある行も非表示となった。

■smb.confの有効行だけ表示するにはもう一工夫が必要
[root@cent63 ~]# grep -v "^[^t]$\|^[^t]*#\|^$\|^#\|^;" /etc/samba/smb.conf [global] workgroup = MYGROUP server string = Samba Server Version %v log file = /var/log/samba/log.%m max log size = 50 security = user passdb backend = tdbsam load printers = yes cups options = raw [homes] comment = Home Directories browseable = no writable = yes [printers] comment = All Printers path = /var/spool/samba browseable = no guest ok = no writable = no printable = yes [root@cent63 ~]#

以上です。小ネタですみません。