LinuxのCronジョブを使ったタスク自動化:crontabの基本と使い方

  • URLをコピーしました!
目次

Cronジョブとは?

Cronジョブとは、Linuxで定期的にタスク(ジョブ)を自動的に実行する仕組みのことです。
システム管理者やユーザーがスクリプトやコマンドを一定の間隔で実行するために使われ、
例えば、毎日深夜にバックアップを取る、一定時間ごとにログをクリーンアップするといった作業が自動化できます。
これにより、手動で行う作業を削減し、時間を節約できます。

crontabの基本的な使い方

crontabは、ユーザーごとに定期実行するタスクを定義するファイル、
またはそのファイルを編集するためのコマンドです。
crontabコマンドを使えば、自分が設定したタスクを簡単に管理できます。

crontabの書式

crontabのフォーマットは次の通りです:

分 時 日 月 曜日 コマンド

それぞれのフィールドが何を意味するかを見ていきましょう:

  • :タスクを実行する分(0〜59)
  • :タスクを実行する時刻(0〜23)
  • :タスクを実行する日(1〜31)
  • :タスクを実行する月(1〜12)
  • 曜日:曜日を指定(0〜7、0または7は日曜日)
  • コマンド:実行したいコマンドまたはスクリプト

例:毎日午前2時にバックアップを実行

例えば、毎日午前2時にバックアップスクリプトを実行する場合、crontabファイルに以下のように記述します:

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

これは、毎日午前2時に指定したスクリプト(/home/user/backup.sh)を実行する設定です。

crontabの実行方法

  1. crontabを確認する
    現在のユーザーのcrontab設定を確認するには、以下のコマンドを使用します:crontab -l
  2. crontabを編集する
    新しいタスクを追加したり、既存のタスクを編集する場合は、次のコマンドでエディタを開きます:crontab -e
  3. crontabの削除
    全てのジョブを削除するには、次のコマンドを実行します:crontab -r

オプション

  • -l:現在のcrontabエントリーを表示
  • -e:crontabを編集
  • -r:crontabを削除
  • -i:crontabを削除する際に確認を求める(crontab -i -r

Cronジョブを手動で確認する方法

Cronジョブが実行されていることを確認する方法は2つあります。

ログファイルで確認

Cronジョブが実行されたかどうかを確認するために、システムログをチェックできます。
通常、/var/log/syslogまたは/var/log/cronにcronジョブの実行結果が記録されています。

次のコマンドで確認できます:

tail -f /var/log/syslog 
grep CRON /var/log/syslog

実際にタスクを作って確認してみよう

テストタスクを設定する

Cronジョブの実行を確認する簡単な方法として、シンプルなテストジョブを作成します。
たとえば、定期的にファイルにタイムスタンプを書き込むスクリプトを作成し、
それが正しく実行されているかを確認できます。

スクリプトを作成

以下のようなシェルスクリプトを作成し、/home/user/test_cron.shに保存します:


#!/bin/bash date >> /home/user/cron_test.log

crontab -eコマンドを実行

ターミナルで次のコマンドを実行して、現在のユーザーのCronジョブを編集します。

crontab -e

このコマンドを実行すると、ユーザーのCronジョブを設定するためのファイルがテキストエディタで開きます
(初めて実行する場合、使用するエディタの選択肢が表示されることがあります)。

ジョブを記述 エディタが開いたら、次の行を追加します:

* * * * * /home/user/test_cron.sh

これは、毎分スクリプト/home/user/test_cron.shを実行する設定です。
パスは自分の環境に合わせて調整してください。

Cronジョブの確認

追加したジョブが正しく反映されたかを確認するには、以下のコマンドを実行します:

crontab -l

これで、現在のユーザーに設定されたCronジョブの一覧が表示され、
* * * * * /home/user/test_cron.shが含まれていれば成功です。

実行結果の確認

/home/user/cron_test.logを確認すると、毎分実行された時間が記録されているはずです:cat /home/user/cron_test.log これにより、cronジョブが正しく実行されているかどうかを簡単に確認できます。

システム全体のCron設定:cron.dとcron.daily

個々のユーザーのcrontabとは別に、システム全体で使用されるCronジョブは専用ディレクトリで管理されています。
これにより、システム管理者が特定のタスクを全ユーザーに対して自動的に設定できます。

  • /etc/cron.d:このディレクトリにはシステム全体のタスクを定義するファイルが配置されます。個々のファイルには、crontabと同様の形式でジョブを記述します。
  • /etc/cron.daily:このディレクトリには、毎日実行されるスクリプトを配置します。システムメンテナンスのタスクやバックアップのスクリプトを毎日実行したい場合に便利です。

他にも、/etc/cron.hourly/etc/cron.weekly/etc/cron.monthly
というディレクトリがあり、それぞれの期間で自動実行されるスクリプトを保存できます。

まとめ

Cronジョブは、Linuxにおける強力なタスク自動化のツールであり、
システム管理者や一般ユーザーが様々な作業を定期的に自動化できます。
crontabを使って個別のスケジュールを管理するだけでなく、
システム全体のスケジューリングも行えるため、正しい設定を行えば時間の節約やミスの防止に役立ちます。

    目次