cronの使い方

投稿者: | 2024年3月13日

こんばんは、五月雨です。
今回はLinux上で定期的に何かを実行するときに使用されるcronの使い方を紹介していきます。

そもそもとして cronってなに?

cronとはLinuxに搭載されているソフトウェアで、定期的な処理を設定するときに用いられます。
Windowsで言うところのタスクスケジューラ。

cronの設定

cronを使うためには、「いつ、誰が何をするのか」を設定させてあげる必要があります。

  • いつ : これはシンプルに実行する時間や曜日、頻度を設定します。
  • だれ : 設定される処理をどのユーザーで実行するのかを設定します。(正しくは実行したいユーザーでcronの設定をする)
  • 何を : どんなプログラム、スクリプトを実行するのかを指定します。

実際の設定方法

設定は crontabというコマンドを実行して行います。
crontabコマンドを実行すると、テキストエディタが開くのでその中に設定を書き込んでいきます。

#以下のコマンドで設定画面(テキストエディタ)に移動する
$ crontab -e
#書き方の一例
*/5 * * * * /home/pwserver/pwserver monitor > /dev/null 2>&1

設定の書き方

crontabの設定は以下のような書式で成り立っています。

分 時 日 月 曜日 実行するコマンド
項目記載する内容説明
0-59の数字何分に実行するかの設定
例えば10と書けば毎時10分に実行される
1-23の数字何時に実行するかの設定
例えば10と書けば毎日10時に実行される
1-31の数字何日に実行するかの設定
例えば31と書けば31日に実行される。この場合31日のない月では実行されない。
1-12の数字何月に実行するかの設定
例えば12と書けば12月に実行される。
曜日0-7の数字何曜日に実行されるかの設定
1と書けば月曜日に実行されることになる。
ちなみに0と7は日曜日として解釈される。
実行するコマンドコマンド実行するコマンドを記載する。
date と書けば指定した日時でdateが実行される
crontabの項目

それぞれの項目は範囲で指定することも可能です。
例えば以下のような日時の書き方は毎月1日の5時と17時に実行するという式になります。

0 5,17 1 * * コマンド

以下の書き方では9時から12時までの1時間ごとに実行されるという指定になります。

0 9-12 * * * コマンド

要するに複数指定する時は「,」で区切り、範囲を指定したいときは「-」でつなげればよいということになります。

また、実行タイミングの指定は以下のような特殊な書き方も出来ます。

意味
@rebootサーバー起動時に1度だけ実行する
@yearly年に1度だけ実行する
これは「0 0 1 1 *」(1月1日の0時ちょうど)と指定するのと等価である
@annually年に1度だけ実行する(@yearlyと同じ)
@monthly月に1度だけ実行する
これは「0 0 1 * *」(毎月1日の0時)ちょうどと指定するのと等価である
@weekly週に1度だけ実行する
これは「0 0 * * 0」(日曜日の0時ちょうど)と指定するのと等価である
@daily日に1度だけ実行する
これは「0 0 * * *」(0時ちょうど)と指定するのと等価である
@hourly1時間に1度だけ実行する
これは「0 * * * *」(毎時0分)と指定するのと等価である
特殊な時刻の書き方

上記の書き方を使う場合の書式は以下のようになります。

@reboot コマンド

複数設定したい場合

crontabでは1行1スケジュールなので複数設定したい場合は改行してスケジュールを書き込めば設定できる

0 0 1 * * コマンド1(毎月1日の0時ちょうどに実行)
5 0 1 * * コマンド2(毎月1日の0時5分に実行)

まとめ

最後に簡単におさらいしておきます。

以上、cronの設定方法や使い方の説明でした。
それではまた次回。

コメントを残す

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

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください