crontabコマンドと設定の書き方 (確認|編集|設定方法)
crontabの使い方について解説します。
crontabって何?
crontabは、定期的にジョブを実行するためのスケジュール管理を行っている**cron**を設定するためのコマンドです。
例えば…
- 毎時0分にファイルを一括読み込みしたい
- 3分おきに、Webサイトをスクレイピングしたい
- 深夜3時になったら、データベースのバックアップを自動でしたい
- 午前10時に自動でメールを送りたい
このようなニーズがある場合は、cronにスケジュールを登録するだけで、設定された時間になったら自動でジョブを実行してくれます。
crontabの設定: -e オプション
以下のコマンドを入力すると、crontabの設定を変更/新規作成することができます。
crontab -e
上記のコマンドを入力したら、viエディタが開くので、viエディタを使って編集をして保存します。(viエディタの使い方はこちら)
crontabの設置のやり方は、以下のように設定します。
crontabの設定ファイルの書き方(例)
① 毎時0分に/home/k-sasaing/hello.shのシェルを実行する
0 * * * * /home/k-sasaking/hello.sh
② 毎時5分に/home/k-sasaing/hello.shのシェルを実行する
5 * * * * /home/k-sasaking/hello.sh
③ 毎日の15時55分に/home/k-sasaing/hello.shのシェルを実行する
55 15 * * * /home/k-sasaking/hello.sh
④5分置きに/home/k-sasaing/hello.shのシェルを実行する
*/5 * * * * /home/k-sasaking/hello.sh
⑤15分と45分に/home/k-sasaing/hello.shのシェルを実行する
15,45 * * * * /home/k-sasaking/hello.sh
⑥5時30分、6時30分、7時30分に/home/k-sasaing/hello.shのシェルを実行する
30 5-7 * * * /home/k-sasaking/hello.sh
⑦12月31日11時59分に/home/k-sasaing/hello.shのシェルを実行する
59 11 31 12 * /home/k-sasaking/hello.sh
⑧日曜日の5時に/home/k-sasaing/hello.shのシェルを実行する
0 5 * * 0 /home/k-sasaking/hello.sh
crontabの設定方法
上記の例を見て分かる通り、以下のような法則で描くことができます。
分 時 日 月 曜日 実行コマンド
曜日については、(0:日 1:月 2:火 3:水 4:木 5:金 6:土 )の数値を用いて扱う。
また、範囲を指定する場合は、0-3のように記載し、間隔を開ける場合は、*/5のように記載することであらゆるスケジュールを登録することができます。
crontabの一覧表示: -l オプション
crontabが現在どのような設定になっている確認する場合は、以下のコマンドを実行します。
crontab -l
これで、crontab -eで入力したスケジュールを確認できます。
crontabの削除: -r オプション
crontabの設定を全て削除したい場合、以下のコマンドを実行します。
crontab -r
このコマンドを叩くと全てのcrontabのスケジュールが削除されるので注意してください。
このようなことが起こっても大丈夫なように、crontabのコマンドはバックアップを何処かに取っておいたり、git管理すると安心です。
crontabのユーザー設定: -u オプション
ユーザーごとにcrontabを管理したい場合は、以下のようにuオプションをつけてユーザーを指定することができます。
crontab -u [ユーザ名] -l
上記のコマンドは、指定したユーザーのcrontabの一覧を表示します。
このように、-eや-rなども同様に、-uを一緒につけることで、ユーザーごとに管理することができます。
crontabで実行する際の注意点
crontabで実行する際に、注意すべきことがあります。
多くの場合、実行する際のジョブで何かしらのコマンドを叩いてファイルを実行するかと思います。
その際、そのユーザーがファイルの実行権限を持っていないと実行されません。
以下のコマンドを叩くと、ユーザーに実行権限をつけることができます。
chmod 755 hello.sh
以下のコマンドを打って、実行権限を確認してみましょう。
ls -al
以上で、crontabの設定方法でした。
何かサーバー上で定期実行したいなどの参考になっていたら幸いです。
人気記事 Springbootの環境構築から Hello worldまで on Mac
人気記事 DockerでMySQLとphpAdminのコンテナを作るやり方