LoginSignup
0
2

More than 5 years have passed since last update.

bash > mail送信を検知する (誤動作するかもしれない) | cronによるメールで誤動作する

Last updated at Posted at 2017-11-16
動作環境
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に記載の方法でメール送信しないように変更した。

関連

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2