Cronジョブは、Unix系システムで指定された間隔で自動的に実行されるスケジュールされたタスクです。これらは、システムメンテナンス、バックアップ、スクリプトの自動化、その他の反復タスクにしばしば使用されます。自分のサーバーを管理している場合でも、問題をトラブルシューティングしている場合でも、cronジョブをリストして表示する方法を知っておくことは重要です。このガイドでは、crontabコマンドを使用して既存のcronジョブを表示する方法を示します。

Crontabとは何ですか?

crontabcronテーブルの略です。これは、特定のユーザーのためのcronジョブのリストを含むファイルです。このファイルの各行は、タスクとそのスケジュールされた時間を表します。

現在のユーザーのCronジョブを表示する方法

現在ログインしているユーザーのcronジョブを表示するには、ターミナルを開いて次のコマンドを実行します:

crontab -l

このコマンドは、現在のユーザーのcrontabファイルの内容を出力します。ジョブがスケジュールされていない場合は、次のようなメッセージが表示されます:

no crontab for [username]

別のユーザーのCronジョブを表示する(rootとして)

root権限があり、別のユーザーのcronジョブを確認する必要がある場合は、ユーザー名の後に-uフラグを使用します:

sudo crontab -u username -l

例:

sudo crontab -u www-data -l

これは、システムレベルのタスクを管理したり、特定のサービスのcronジョブをトラブルシューティングしたりする際に便利です。

システム全体のCronジョブを表示する

ユーザー固有のcrontabに加えて、システムはさまざまな場所にスケジュールされたタスクを保存します:

1. システムCrontabファイル

cat /etc/crontab

このファイルには、システムによってスケジュールされたタスクが含まれており、しばしば異なるユーザーのエントリが含まれています。

2. Cronジョブディレクトリ

これらのディレクトリにもスクリプトがあります:

  • /etc/cron.hourly/

  • /etc/cron.daily/

  • /etc/cron.weekly/

  • /etc/cron.monthly/

これらのディレクトリに配置された各スクリプトは、対応する間隔で実行されます。

3. Cron.dディレクトリ

ls /etc/cron.d/

このディレクトリには、サービスやアプリケーションのための追加のcron定義が含まれています。

Crontabフォーマットの理解

crontabファイルの各行は、次の構文に従います:

* * * * * command_to_run
│ │ │ │ │
│ │ │ │ └── Day of the week (0 - 7) [Sunday=0 or 7]
│ │ │ └──── Month (1 - 12)
│ │ └────── Day of month (1 - 31)
│ └──────── Hour (0 - 23)
└────────── Minute (0 - 59)

例:

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

これは「毎日午前2時に/usr/bin/backup.shを実行する」という意味です。

プロのヒント:grepで出力をクリーンにする

特定のジョブを検索している場合は、出力をフィルタリングできます:

crontab -l | grep backup

まとめ

cronジョブをリストする方法の簡単な要約は次のとおりです:

タスクコマンド
現在のユーザーのcronジョブをリストするcrontab -l
別のユーザーのcronジョブをリストするsudo crontab -u username -l
システムcrontabを表示するcat /etc/crontab
システムディレクトリのcronジョブをリストするls /etc/cron.*
特定のcronジョブを表示する`crontab -l

これらのシンプルなコマンドをマスターすることで、任意のUnixまたはLinuxシステム上でcronジョブを簡単に検査および管理できます。定期的にスケジュールされたタスクを確認することで、システムが効率的に動作し、予期しない驚きを避けることができます。