cronでスクリプトを定期実行する




どうも高妻です。Twitterでもプログラミングのことや暗号通貨のことをつぶやいているのでよかったら覗きにきてください。  

cronで定期実行

サーバー上で何かの処理を定期実行したくなる場面はよくあるかと思います。そんな時に候補に上がるものとしてcronとJenkinsがあると思います。

cron

メリット

  • 少ない設定で手軽に設定でき、すぐ動作する
  • EC2だと初期設定でcronが使える

デメリット

  • コードで管理するのでジョブが多くなってくると見通しが悪くなって管理できなくなる
  • 正常に動作しているのか、していないのか初めて使う場合よくわからないので動いていない場合原因究明が少し大変

jenkins

メリット

  • GUIのサービスなのでジョブが多くても問題なく管理できる
  • 細かな設定もGUIでできる

デメリット

  • サーバーにJenkinsをインストールしないといけないので導入と初期設定が少しめんどくさい
  • アクセス制限等のセキュリティに気をつけないといけない。←当たり前ですが

cronでの定期実行

下記コマンドでcronの設定ファイルを開けます。

今回はnodeスクリプトの定期実行を想定しています。

cronでの実行で気をつけないといけないのは、crontabを実行したユーザーのホームディレクトリがスクリプト実行の起点になるということです。そのため、スクリプトを置いているディレクトリに移動するなど少し工夫が必要です。

下記は/home/ec2user/scripts/sample.jsを5分おきに実行する設定です。したがって、まず/home/ec2user/scriptsに移動してnodeコマンドをフルパスで指定してsample.jsを起動するようにしています。

動作しているかの確認方法

設定したcronが実際に動作しているかは下記ログファイルの中を見ればわかります。時間とコマンドが表示されていれば大丈夫です。

エラーが出ていないか確認する方法

しかし、cronが動作していてもスクリプトがエラーになっている場合があります。その時はエラーをファイルを書き出して確認します。

まとめ

  • crontabを実行したユーザーのホームディレクトリが起点となる
  • /var/log/cronを見ると実行できているか分かる
  • スクリプトがエラーになっていないかログを書き出して確認する

以上3点を頭にいれておけばcronでつまづくことはないかと思います。以上です。







コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です