7
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

cronとは何かを初心者向けに整理してみた

7
Posted at

Linuxの運用や保守をしていると、よく出てくるのが cron(クーロン) です。
最初は「なんとなく定期実行する仕組みらしい」くらいの理解だったのですが、実際に触ってみると、毎日決まった時間に処理を動かしたいときにかなり便利でした。

この記事では、IT初心者向けに cronとは何かどんなときに使うのか設定の見方 をざっくり整理します。


cronとは?

cronは、Linuxでコマンドやスクリプトを定期的に自動実行する仕組みです。

たとえば、こんな処理を自動化できます。

  • 毎日深夜にバッチ処理を動かす
  • 1時間ごとにログを集計する
  • 毎週決まった曜日にバックアップを取る
  • 10分おきに監視用スクリプトを実行する

要するに、「人が毎回手でやらなくていいようにする仕組み」 です。


どんなときに使うのか

自分がイメージしやすかったのは、次のようなケースです。

1. バッチ処理の定期実行

売上集計やデータ連携など、毎日同じ時間に実行したい処理を自動化できます。

2. ログのチェックや削除

定期的にログを確認したり、古いログを削除したりする処理を仕込めます。

3. 監視や通知

監視スクリプトを定期実行して、異常があれば通知することもできます。

4. バックアップ

データベースやファイルのバックアップを夜間に自動実行する、といった使い方もあります。


cronの設定はどこに書くのか

cronの設定は、crontab という設定ファイルのようなものに書きます。

よく使うコマンドはこれです。

現在の設定を確認

crontab -l

設定を編集

crontab -e

-l は list、-e は edit と覚えるとわかりやすいです。


cronの基本的な書き方

cronの設定は、基本的に次の形です。

分 時 日 月 曜日 実行したいコマンド

たとえば、

0 2 * * * /home/user/sample.sh

と書くと、毎日2:00に /home/user/sample.sh を実行する という意味になります。


各項目の意味

cronは5つの時間指定と、最後に実行コマンドを書きます。

項目 意味
0〜59
0〜23
1〜31
1〜12
曜日 0〜7(0と7は日曜日扱いが多い)

最初は覚えづらいですが、左から「分・時・日・月・曜日」 です。


* は何を意味するのか

cronでよく出てくる * は、すべて という意味です。

たとえば、

0 * * * *

なら、毎時0分 に実行です。

*/10 * * * *

なら、10分おき に実行です。

この */10 みたいな書き方は、現場でもよく見ます。


よくある設定例

毎日3:00に実行

0 3 * * * /home/user/daily.sh

10分おきに実行

*/10 * * * * /home/user/check.sh

毎週月曜日の9:00に実行

0 9 * * 1 /home/user/weekly.sh

毎月1日の0:00に実行

0 0 1 * * /home/user/monthly.sh

初心者が混乱しやすいポイント

1. 書いたのに動かない

これはかなりあります。原因としては、たとえば次のようなものがあります。

  • スクリプトに実行権限がない
  • パスの指定が間違っている
  • cronで使える環境変数が少ない
  • コマンドを省略して書いている

cronは、普段自分がターミナルで動かしているときと同じ環境ではないことがあります。
そのため、コマンドやファイルはフルパスで書く のが安全です。

例:

/bin/bash /home/user/sample.sh

2. 実行結果が見えにくい

cronは裏で動くので、失敗していても気づきにくいです。

そのため、最初はログを出すようにしておくと安心です。

0 2 * * * /home/user/sample.sh >> /home/user/sample.log 2>&1

これは、標準出力もエラー出力もログファイルに書く設定です。


3. 時間の見方を間違える

たとえば、

*/10 * * * *

は「10分おき」です。

でも、

10 * * * *

は「毎時10分」です。

似ているので、最初はかなり間違えやすいと感じました。


cronとcrontabの違い

最初はここも少し混乱しました。

  • cron
    定期実行そのものの仕組み

  • crontab
    cronに登録する設定を書くためのもの

つまり、cronが仕組み本体で、crontabが設定を書く場所 というイメージです。


自分なりの理解

自分は最初、cronを
「Linux版の定期実行タイマー」
みたいなものだと理解するとわかりやすかったです。

  • いつ実行するかを決める
  • 何を実行するかを書く
  • あとは自動で動く

仕組みとしてはシンプルですが、運用や保守の現場ではかなり重要です。


まず初心者が覚えるとよさそうなこと

最初は全部覚えようとしなくても、次の3つを押さえるだけでかなり楽になります。

  • crontab -l で設定確認
  • crontab -e で編集
  • 分 時 日 月 曜日 コマンド の形を覚える

あとは、よく使う例を見ながら少しずつ慣れるのがよさそうです。


まとめ

cronは、Linuxで処理を定期実行するための仕組みです。
毎回手で実行しなくてよいので、バッチ処理やログ管理、監視、バックアップなどでよく使われます。

初心者のうちは難しく見えますが、まずは以下を押さえれば十分だと思います。

  • cronは定期実行の仕組み
  • 設定は crontab に書く
  • 書式は 分 時 日 月 曜日 コマンド
  • * は「すべて」
  • まずはログ出力付きで試すと安心

これからcronを触る人の参考になればうれしいです。

7
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?