cronで定期的にDockerサービスを再起動する

5月 17, 2021

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


これで設定が完了しました。