cronをつかってapacheとキャッシュのクリアを定期的に行う。

やりたいこと

apacheとキャッシュのクリアを定期的に実行したい。

やったこと

ダメな例 その1

0 6 * * * /etc/init.d/httpd restart  
10 6 * * * /sbin/swapoff -a && /sbin/swapon -a

複数人でrootを共有する場合などにcrontab -e で直接コマンドを書いてしまうと消されたり変更してしまうおそれがあるため、この書き方は良くない。ファイルにシェルスクリプトを書いてそれを実行するべき。

ダメな例 その2

0 6 * * * sh /root/apache.sh > /dev/null 2>&1

apache.sh

#!/bin/sh
/etc/init.d/httpd restart
swapoff -a && swapon -a

この場合、apacheの再起動を待たずにスワップがクリアが実行される。 swapoffが実行されると仮想メモリが物理メモリに展開されるため、空きがなかった時は失敗する。

良い例

0 6 * * * sh /root/apache.sh > /dev/null 2>&1

apache.sh

#!/bin/sh
/etc/init.d/httpd restart && swapoff -a && swapon -a

これなら正常終了した後に、次のコマンドを実行するので、きちんと実行される。