Solaris cronがある日を境に突然実行されなくなった

Cronから呼ばれるスクリプトが動いていない。昨年までは普通に動いていたのに…。年が明けて、2008年になったので年度処理が上手くいっていないと思ったが、スクリプト自体は手動で問題なく動く。

で、調べたところ原因は実行ユーザーのパスワードが期限切れだった。

 

■rootユーザで、cronのログを監視する

rootユーザでtailコマンドを実行して、cronの動作状況をリアルタイムで監視する。

# tail -f /var/cron/log 

 

■cronの実行ユーザでログインして、cronを実行る

別のターミナルで、普段cronを実行しているユーザでログインする。

crontab -l で、実行時間を調べる。

たいていの場合、夜中にスクリプトを実行するんだけど、それまで待っていられません。

1〜2分後に起動するように dateコマンドで、現在時刻を調べてcrontabのスクリプトが1〜2分後に起動するようにする。

 

■cronのログを監視する

# tail -f /var/cron/log
>  CMD: /export/home/foo/Scripts/Test.sh
>  foo 7689 c Tue Jan 13 02:42:00 2009
! user (foo) password has expired Tue Jan 13 02:42:00 2009
<  foo 7689 c Tue Jan 13 02:42:00 2009 rc=1 

なんと、パスワードが期限切れということが発覚!

 

なんでこんなことになったかというと、パワーブローカーなるもので最初にrootでログインするサーバだったので、普段直接fooでログインすることが無いので気づかなかったのです。

 

ウチの場合、サーバのセットアップ等は、米国のITの管理部門が行うので自分ではいじれないのが悲しい。

まぁ、こういう状況の人って少ないと思う。

 

ちなみに passwd -s ユーザ名 で有効期限が分かる。

passwd -x -1 ユーザ名 で有効期限を解除できる。