中野智文のブログ

データ・マエショリストのメモ

ec2 でシンプルな mail クライアント mailx

背景

ec2 の cron を実行したとき、標準出力に何か出ると、メールで送られてくる仕組みになっている。 多くの tips では、ハードディスクがいっぱいになるから、これを停止するものが多いが、 停止する前にエラーなどが出ていないか、確認したいものである。

ところが、デフォルトではメールクライアントは入っていない。 単なる cron の結果を読むだけなのだが、何が良いのだろうか。 スプールを直接読み書きするという方法もあると思うが…

とりあえず、 mailx

シンプルなものはよくわからないが、mailx というものがあるのでこれを入れてみる。

$ sudo yum install mailx
読み込んだプラグイン:priorities, update-motd, upgrade-helper
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ mailx.x86_64 0:12.4-8.8.amzn1 を インストール
--> 依存性解決を終了しました。

依存性を解決しました

============================================================================================
 Package           アーキテクチャー   バージョン                  リポジトリー           容量
============================================================================================
インストール中:
 mailx             x86_64             12.4-8.8.amzn1              amzn-main            254 k

トランザクションの要約
============================================================================================
インストール  1 パッケージ

総ダウンロード容量: 254 k
インストール容量: 451 k
Is this ok [y/d/N]: 

消費される容量は 451k である。

早速 cron の実行結果が何なのか見てみる

....
make: pipenv: Command not found
...

なんと、pipenv が見つからずに失敗していた。

メールのヘッダーの下の方に何か書いてある。

X-Cron-Env: <LANG=en_US.UTF-8>
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/home/ec2-user>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=ec2-user>
X-Cron-Env: <USER=ec2-user>
Status: RO

環境変数がずらりと並んでいる。 おや? PATHが、/usr/bin:/bin だけしか設定されていない。これが原因だ。

…というわけで、イケてる mail クライアントだと、ヘッダーの部分は隠してしまうかもしれないが、 mailx だと cron のデバッグにちょうどいいのである。ただし、操作方法が分かりにくいのが難点である。