cronで定期的にDockerのサービスを再起動してみます。
ひとまず15分間隔くらいで再起動を実行するように設定してみます。
crontabを使って設定を書く
よくあるのは、crontab
を使う方法です。
crontab -u root -e
-u
で cronを設定するユーザーを指定して、-e
でcronを設定するエディタを起動するように指定します。
エディタが起動したら、こんな感じでcronの設定を書きます。
0 15 * * * echo "hello."
cronの書き方
そもそもcronってどうやって書くんだ?
今回の15分おきに実行する、は次のように書きます。
*/15 * * * * systemctl restart docker
左から、[分] [時] [日] [月] [曜日] [コマンド]
- 分は0~59の数字で指定
- 時は0~23の数字で指定
- 日は1~31の数字で指定
- 月は1~12の数字で指定
- 曜日に関しても数字で指定し、0と7が日曜日、1以降は順に、月、火、水、木、金、土となる
書き方の例
43 23 * * * # 23:43に実行
12 05 * * * # 05:12に実行
0 17 * * * # 17:00に実行
0 17 * * 1 # 毎週月曜の 17:00に実行
0,10 17 * * 0,2,3 # 毎週日,火,水曜の 17:00と 17:10に実行
0-10 17 1 * * # 毎月 1日の 17:00から17:10まで 1分毎に実行
0 0 1,15 * 1 # 毎月 1日と 15日と 月曜日の 0:00に実行
42 4 1 * * # 毎月 1日の 4:42分に実行
0 21 * * 1-6 # 月曜日から土曜まで 21:00に実行
0,10,20,30,40,50 * * * * # 10分おきに実行
*/10 * * * * # 10分おきに実行
* 1 * * * # 1:00から 1:59まで 1分おきに実行
0 1 * * * # 1:00に実行
0 */1 * * * # 毎時 0分に 1時間おきに実行
0 * * * * # 毎時 0分に 1時間おきに実行
2 8-20/3 * * * # 8:02,11:02,14:02,17:02,20:02に実行
30 5 1,15 * * # 1日と 15日の 5:30に実行
cron起動しているか確認する
statusをみて、active
になっていたらOKです。
service crond status
起動してなかったら、次のコマンドで起動します。
service crond start
設定してみる
次の設定を追加します。
*/15 * * * * sudo systemctl restart docker
-l
オプションで設定されていることを確認します。
crontab -l
cronが実行されるとログが出力されるので、次のコマンドで結果を確認できます。
vi /var/log/cron
これで設定が完了しました。