はじめに
-
今回この記事を書こうと思ったのは、最近cronに関して学び直す機会があり、自分自身理解しきれていない部分もあったので今回学んだことを記事としてまとめて自分でも確認し直せるようにしようと思ったからです。
-
タイトル通りcronについてのまとめとよくあるエラーについてなので、有識者というよりかは初心者の方に向けた記事になります。
cronとは
- この内容については、cronの設定ガイドで以下のように説明されています。
cron とは、ジョブ(スクリプト)を自動実行するためのデーモンプロセスです。
そして、Linux システムの管理を行なう場合、ログのローテートや、バックアップなど、定期的に自動実行したいジョブが数多くあります。
特に、バックアップなどは、システムへの負荷が大きいため、通常は、ユーザからのアクセスが少ない、深夜や早朝に行なわれます。
-
これだけの説明を聞くとなんとなく難しそうという気がしますが、「指定した時間に指定したプログラムを動かしてくれるもの」という認識で問題ないと思います。
-
例えば引用文にあるようにバックアップしたり、webサーバが停止した際に再起動するようにしたりなどができます。(他にも色々あると思いますがあくまでも1例です)
解説
- 次に「cronとはどういうものか分かったけど、実際どうやって使うの?」という方向けにプログラムを交えてここからは進めていきます。
crontabファイルの編集
crontab -l //crontabのファイルを確認
//ファイルがある場合はここに表示されます。
//ファイルが無い場合は no crontab for am と表示されます。
crontab -e //crontabのファイルの編集
//このコマンドを実行するとviのエディタが開きます。
-
次にcrontab - e した後のviの部分を下に書いていきます。
-
書式は 分 時 日 実行ユーザ コマンド の順番になります。
-
時間を指定しない部分は*****で表記します。
-
実行ユーザは省略することができます。
30 03 * * * /root/apache_process.sh
//意味としては毎日3時30分ごとに /root/apache_process.sh を実行するとなります。
-
このようにcrontabを編集し任意のファイルを指定することで一定時間ごとに実行してくれます。
-
最初に引用文を交えて説明しましたがこれを利用することで自動バックアップや自動シャットダウンなどが可能になります。
-
もしこの記事を読んで興味が出た方は一度自分で作成してみると勉強にもなりますし面白いと思います。
よくあるエラー
-
cronで設定したシェルスクリプトが動作しないことがあります。その場合は大抵は以下のことが多いです。
-
そもそもcrondが動作しているのか?
/etc/rc.d/init.d/crond status //これで動作しているか確認。
/etc/rc.d/init.d/crond start //停止していた場合はこれで起動させます。
- 実行ファイルの権限に問題はないか?
ls -al //これで権限の確認ができます。
chmod +x 任意のファイル //これで実行権限が付与できます。
// xとは実行のことです。なのでここではxを付与しています。
- ログを見て何か問題はないか?
cat /var/log/cron //これでlogの確認ができます。
参考サイト
最後に
今回cronについてのまとめとよくあるエラーについての記事を書きました。
こういうOSの内部で動いているプログラム1つについて色々調べてみると「奥が深いなぁ」と思わせられる反面自分の知識の足りなさを痛感します。
今後もこういう風に勉強したことや再度学ぶ機会があったものに関しては積極的にアウトプットしていきたいと思っています。