スポンサーリンク

サーバー起動時に1度だけCronでスクリプトを実行する

OS
たろ
たろ

サーバー起動時に1度だけスクリプトを実行するにはどうすればいいんだろう?

こんな疑問にお答えします。

本記事の内容
  • サーバー起動時に任意のスクリプトを実行する方法の紹介
スポンサーリンク

はじめに

man 5 crontab でドキュメントを確認すると以下の記載がありました。

crontab に実装するこでサーバーの起動時に任意のスクリプトを実行できることになります。

              string         meaning
              ------         -------
              @reboot        Run once, at startup.
              @yearly        Run once a year, "0 0 1 1 *".
              @annually      (same as @yearly)
              @monthly       Run once a month, "0 0 1 * *".
              @weekly        Run once a week, "0 0 * * 0".
              @daily         Run once a day, "0 0 * * *".
              @midnight      (same as @daily)
              @hourly        Run once an hour, "0 * * * *".

以下、@reboot を使う際の注意点。

Please note that startup, as far as @reboot is concerned, is the time when the cron(8) daemon startup.  In particular, it may be before some system daemons, or other facilities, were startup.  This is due to the boot order sequence of the machine.

以下DeepL訳

スタートアップとは、@reboot に関する限り、cron(8) デーモンが起動する時間であることに注意してください。 特に、いくつかのシステム・デーモンや他の設備が起動する前であるかもしれません。他の設備が起動する前になることがあります。 これは、マシンの起動順序の順番によるものです。

crontab に@rebootを実装

crontab には以下のように実装。

$ crontab -l
@reboot /home/user/self-deploy.sh

例えば、サーバー起動時に所定のパスに移動し、git pull を実行する例。

$ cat self-deploy.sh  
#!/bin/bash
cd /path/to/your/workspace
git pull

このようにすることで眠っていたサーバーが起動したさいに常に最新のコードを展開することが可能になります。

コメント

タイトルとURLをコピーしました