概要
testコマンドというか直前に実行した確認コマンドの結果次第でやりたいコマンド実行したい時の書き方。たまに使おうとすると思い出すのに時間がかかるのでめも。
参考:Linuxコマンド集 - 【 test 】 条件式の真偽を判定する:ITpro
&&で条件が真だったら実行
ユーザが誰か?を確認の上でコマンド実行 echo "run"はまぁ好きなコマンドで。
### $USERと文字列比較して実行。
[test-user@hoge ~]$ test $USER = test-user && echo "run"
run
### 別ユーザだったら何もしない。
[root@hoge ~]# test $USER = test-user && echo "run"
[root@hoge ~]#
### testコマンドは[]でも書けるけど分かりづらいのであまり好きくない。
[test-user@hoge ~]$ [ $USER = test-user ] && echo "run"
run
### コマンド実行結果で条件。
[test-user@hoge ~]$ test `whoami` = test-user && echo "run"
run
あまり使わないのだけどrootでもない特権ユーザがいて、そいつが実行するようにカスタムしてるミドルウェアでうっかりrootでやるとファイル所有者とかごたごたになる問題になる場合とかでたまにいる。
手順書とかで確認コマンド実行→目視確認→やりたいコマンド実行とかで毎度定型なのはちょっと仕掛けたくなる。
ファイルあるか?とかなんかの結果が指定文字列と一致したらとか条件工夫したい場合はtestコマンドのオプションで頑張る。
||で条件が偽だったら実行
crondで定期的にコマンド実行して失敗したらコマンド実行したりとか。
雑にプロセス監視したい場合とかプロセス消えたらメール送ったりに使える。
$ crontab -l
* * * * * ps -C httpd > /dev/null || /bin/mail -s "test mail" hoge@hoge.com
httpd(お好きなものを)を毎分監視して死んでたらメール送って教えてくれる。
(死んだら毎分メール来るとかは気にしない...)
もろもろ根本的な対策ではないのは重々承知している。
以上。