cronの設定について

こんにちは。hacknoteのj.kushiyamaです。
今回学習したことの一部としてcronの設定について紹介したいと思います。

cronとは?

unix系OSのコマンドを定期的に実行するためのデーモンプロセスです。デーモンプロセスとは主にバックグランドで動作するプロセスのことをいいます。

具体的な設定方法

設定ファイルは

crontab -e

によって編集できます。これによりファイルを開き、つぎのような書式で設定することができます。

分 時 日 月 曜日
*  *   *  *   *    (command)

分、時、日にはそれぞれ0~59,0~23,1~31の値を、月には1~12またはjan~dec(アルファベット3文字)、曜日には0~7またはsun~sat(月と同様)を指定することができます。

commandの部分に定期的に実行したいコマンドを書きます。ディレクトリは指定がないと実行するユーザーのホームディレクトリで実行するため、cdであらかじめ移動の記述をしておくと良いでしょう。

例1

例えば、以下のように編集します。

10 10 * * * cd ex1/hoge; bash test.sh

この例では、毎日、毎月、毎曜日(省略するとこうなります)の10時10分にcd ex1/hogeを実行したあとにbash test.shのコマンドを実行します。 (ex1/hogeにtest.shがあることを前提としています。)


しかし、通常は以下のように指定するのが良いでしょう。

10 10 * * * bash /ex1/hoge/test.sh

この例ではあらかじめパスを指定してそこでコマンドを実行しています。

例2

*/1 * * * * bash test2.sh

この例は毎分(1分ごとに) bash test2.sh を実行する場合です。*/n でn(単位)間隔で実行することができます。

日や月などを省略する場合も*は必ず入れるようにしてください。これがないとシンタックスエラーで再編集を促されます。

また、ユーザーは編集したユーザーの権限で実行されます。そのため、管理者権限が必要なコマンドなどはsudo などで管理者になってから行うようにしましょう。

設定したcronは

crontab -l

で見ることができます。

まとめ

  • crontab -e で編集
  • 実行するユーザーとディレクトリに注意
  • 省略するところがあっても * を入れる。
  • crontab -l で設定したcronを見ることができる。