中山テック 代表の中山です。
さて、サーバ上で定期的に処理を行いたい場合はどうすれば良いのでしょうか。
まさか時間が来たら手で処理を行う、と言うわけにもいかないでしょう。
その時は「cron」が非常に役に立ちますので是非使い方をご覧頂ければと思います。
#!/bin/bash
echo -e "`date` はろーわーるど" >> /home/postgres/crontest.log
HelloWorld並みの簡単な処理です。上記は「crontest.sh」というシェルとなります。
定期的に「crontest.log」ファイルに「はろーわーるど」という文字を積み重ねていくだけ。
例えばこれを1分おきに出したい!という場合の処理を行うとしたらどう定義すればよいのでしょうか。
crontabで追加
ユーザを指定して実行
crontab -e -u postgres
*/1 * * * * /etc/cron.d/crontest.sh > /dev/null 2>&1
◆左から、分 時 日 月 曜日
00 10 * * * なら毎日10時10分
00 10 1 * * なら毎月1日、10時10分
と言った形で指定する
:wq
で保存
まず、crontab -eを指定するとファイルが開かれます。
-uでユーザを選択することも可能です。
上記の場合は、postgresユーザが1分おきに前項のシェルを実行する、と言ったプログラムです。
実行結果
tail -f crontest.log
2024年 3月 1日 金曜日 01:12:01 JST はろーわーるど
2024年 3月 1日 金曜日 01:13:01 JST はろーわーるど
2024年 3月 1日 金曜日 01:14:01 JST はろーわーるど
2024年 3月 1日 金曜日 01:15:01 JST はろーわーるど
2024年 3月 1日 金曜日 01:16:02 JST はろーわーるど
2024年 3月 1日 金曜日 01:17:01 JST はろーわーるど
2024年 3月 1日 金曜日 01:18:01 JST はろーわーるど
2024年 3月 1日 金曜日 01:19:01 JST はろーわーるど
2024年 3月 1日 金曜日 01:20:01 JST はろーわーるど
これにてcron登録が完了しました!
ご覧の通り1分おきにログが吐き出されています。
今回は1分おきにシェル実行し、ログに吐き出しているだけですが例えば1時間おきにログローテートしたいとか。
はたまた前回のブログでお話したデータベースのバックアップを取得するとか。
やり方さえわかれば後は命令するだけなので非常に簡単な機能となっております。
まとめ
非常に便利な機能「cron」。
これがあることで定期的に古いログファイルを削除するなりバックアップを取ったり。
使い方は無限大です。
操作も難しくないので是非活用してみてください!
※記載次第ではrmをルートディレクトリでやってしまった!という方もいらっしゃいますので、取り扱いは慎重に・・・