【Linux】cronとは?定期的なタスクを自動化する便利ツール

日々のサーバ運用やバックアップ作業を手動で行っていると、気づけば時間を浪費してしまうことがありますよね。そんな時に役立つのが 「cron(クロン)」です。UNIX系システムで広く利用されているこのツールは、決まった時間にコマンドやスクリプトを自動実行してくれる優れた機能を持っています。この記事では、cronの基本的な仕組みや導入方法について、わかりやすく解説します。
繰り返しの作業を効率化したい方は、ぜひ参考にしてください。

1. cronとは

cronは、UNIX系オペレーティングシステムで利用されているジョブスケジューリングツールです。定期的なタスクの自動実行を管理するためのシステムで、指定した時間や周期に基づいてスクリプトやコマンドを自動で実行することができます。

例えば、毎日のバックアップ作業、サーバの監視ツールの実行、ログファイルの整理など、手動で繰り返し行う作業を自動化するのに便利です。cronは、サーバ管理者やプログラマーにとって、作業の効率化を図るための強力なツールです。

cronの動作の中核となるのが「crontab(cron table)」です。crontabは、ユーザごとに管理される設定ファイルで、どのコマンドを、いつ、どのような頻度で実行するかを記述します。

cronの主な特徴

  • 時間単位での自動実行:秒単位ではなく、最小単位は1分
  • 定期的な実行が可能:毎時、毎日、毎週などの繰り返しタスクに最適
  • ユーザ単位で設定可能:OS上のユーザ単位でそれぞれcrontabを持っているので、各々で自分のタスクを管理できる
  • サーバでの長期間運用:サーバの長期運用で、スケジュールされたタスクの自動実行に最適です

cronの使用例

  • 毎日深夜にデータベースのバックアップを行う
  • 毎週月曜の朝にサーバログを整理する
  • 1時間ごとにシステム状態を監視するスクリプトを実行する

2. cronの導入方法

cronは、多くのUNIX系のOS(LinuxやmacOSなど)に標準でインストールされています。ここでは、Linuxシステムを例にcronの導入手順を紹介します。

cronがインストールされているか確認する

まず、cronがすでにシステムにインストールされているか確認します。

$ crontab -l

何も設定されていない場合、no crontab for userと表示されますが、エラーが表示されていなければcronはインストールされています。もしインストールされていない場合は以下の手順でインストールできます。

cronをインストールする

UbuntuなどのDebian系の場合は、以下のコマンドを使用してcronをインストールします。

$ sudo apt update
$ sudo apt install cron

Red Hat系の場合は以下のコマンドを使用します。

$ sudo yum install cronie

cronを起動する

インストールが完了した後は、cronを起動し、システム起動時に自動的にcronが立ち上がるように設定します。

$ sudo systemctl start cron
$ sudo systemctl enable cron

上記のコマンドは、Debian系、Red Hat系ともに同じコマンドになります。

crontabを設定する

タスクのスケジューリングをcrontabコマンドを使って設定します。crontabを編集します。

$ crontab -e

crontabの編集ができるようになります。
crontabの記述形式は以下のようになります。

分 時 日 月 曜日 コマンド

分、時、日、月、曜日には数字やすべてという意味を表す「*」を指定します。
以下に例を出します。

30 2 * * * /usr/bin/backup.sh

この設定は、毎日午前2時30分にbackup.shというスクリプトを実行するものです。

cronの設定を確認する

設定後、現在のcrontabの内容を確認するには以下のコマンドを使用します。

$ crontab -l

cronログを確認する

cronが正しく動作しているかを確認するには、/var/log/syslog(または、/var/log/cron)をチェックします。以下のコマンドでログを確認できます。

$ tail -f /var/log/syslog

これで、cronが設定どおりにタスクを実行しているか確認できます。

最後に

cronを活用することで、手間のかかる繰り返し作業を自動化し、サーバ運用やデータ管理の効率を大幅に向上させることが可能です。

コメント