シェルスクリプト




bashワンライナーを繰り返し実行

1行だけのプログラムコードをワンライナーと呼びます。
bashでは セミコロン";" で区切ることで、繰り返し処理をワンライナーにできます。

システム障害発生時などで状態確認コマンドを定期的に実行するときに用いる場合が多いです。

例) httpdというプロセスが上がっているか定期的に確認する
$while true ; do ps aux | grep httpd ; echo ""; sleep 2 ; done ;
daemon    5762  0.0  0.3  11540  3000 ?        S    May01   0:00 /usr/sbin/httpd
netscreen   7196  0.0  0.0   3080   708 pts/5    S+   09:19   0:00 grep httpd
daemon   34413  0.0  0.3  11540  2992 ?        S    May01   0:00 /usr/sbin/httpd
root     40539  0.0  0.5  11408  4704 ?        Ss   Apr23   0:15 /usr/sbin/httpd

daemon    5762  0.0  0.3  11540  3000 ?        S    May01   0:00 /usr/sbin/httpd
netscreen   7322  0.0  0.0   3080   712 pts/5    S+   09:19   0:00 grep httpd
daemon   34413  0.0  0.3  11540  2992 ?        S    May01   0:00 /usr/sbin/httpd
root     40539  0.0  0.5  11408  4704 ?        Ss   Apr23   0:15 /usr/sbin/httpd

daemon    5762  0.0  0.3  11540  3000 ?        S    May01   0:00 /usr/sbin/httpd
netscreen   7393  0.0  0.0   3080   712 pts/5    S+   09:19   0:00 grep httpd
daemon   34413  0.0  0.3  11540  2992 ?        S    May01   0:00 /usr/sbin/httpd
root     40539  0.0  0.5  11408  4704 ?        Ss   Apr23   0:15 /usr/sbin/httpd



アラームをメール通知するシェルスクリプト

システム管理業務では、ログファイルを見てアラーム検知したときメール通知するシェルスクリプトをcronに登録することが多いです。

例) secureログでアラーム検知したら対象のログをメール通知するシェルスクリプト
#!/bin/bash
cat /var/log/secure | grep error | mail -s "secure error" hoge@hoge.com

通知メールのSubjectを日本語にしたい場合は、base64でエンコードした文字列を入れないと、一部のメーラ(BeckeyやOutlook)で文字化けします。

※余談
業務ではメールの宛先(hoge@hoge.com)を監視担当者にするのか、システム管理者にするべきかでよく揉めます。
(自分の仕事を増やしたがる人は少くない(^^; )
最終更新:2011年05月18日 11:20
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。