動作環境
Xeon E5-2620 v4 (8コア) x 2
32GB RAM
CentOS 6.8 (64bit)
openmpi-1.8.x86_64 とその-devel
mpich.x86_64 3.1-5.el6とその-devel
gcc version 4.4.7 (とgfortran)
NCAR Command Language Version 6.3.0
WRF v3.7.1を使用。
Python 2.6.6 (r266:84292, Aug 18 2016, 15:13:37)
Python 3.6.0 on virtualenv
動作システム
- メールは送信のみを行い、受信はしない
- 特定のスクリプト(またはコマンド)でのみメール送信する
この状況において「メール送信した」を検知したい。
参考
/var/log/maillog
を使う。
ただし、中身を見るにはsudoなどが必要になるので、サイズだけをチェックする。
code
check_sendmail_171116_exec
#!/usr/bin/env bash
# v0.1 Nov. 16, 2017
size1=$(ls -l /var/log/maillog | awk '{print $5}')
while [ 1 ];do
size2=$(ls -l /var/log/maillog | awk '{print $5}')
if [ $size1 -ne $size2 ]; then
break
fi
sleep 1
done
使用例
一つのターミナル(ターミナルA)で以下を実行する。
$ bash check_sendmail_171116_exec && echo "mail sent"
(待機中)
もう一つのターミナル(ターミナルB)で以下を実行する (メールアドレスは仮)。
$ echo "TEST" | mail -s "test 18:44" 7of9@borg-corp.com
ターミナルA側にmail sent
が表示される。
用途
一つのスクリプト終了後にmail送信するようにしているとする。
その作業が終わった時に、次のスクリプト(別のディレクトリにある)を開始したい時に使えるかもしれない。
一つのスクリプトに実行スクリプトを直接記載するよりも柔軟なシステムにできる。
懸念事項
/var/log/maillog
に追記されるイベントがあると誤動作する。
毎日20:30にメールが届いている。バックアップ処理のメールのようだ。そのため誤動作する。
rsyncを使うcronがメールを送信していた。
stackoverflowに記載の方法でメール送信しないように変更した。