11 Linux での Cron スケジュールタスクの例
この記事では、Crontab コマンドを使用して、Linux タスクをバックグラウンドで定期的に自動的にスケジュールし、実行する方法を確認します。
頻繁なジョブを手動で処理するのはシステム管理者にとって気が遠くなる作業ですが、Linux または Unix 系オペレーティング システムの cron デーモンを使用すると、そのようなタスクをスケジュール設定し、人間の介入なしにバックグラウンドで自動的に実行できます。
たとえば、コマンドラインからスケジュールされたタスクを実行するために使用されるCron デーモンを使用すると、Linux システムのバックアップ、更新のスケジュール、ファイルの同期などを自動化できます。または、オンライン ツールを使用して cron ジョブを生成します。
Cron は 1 分ごとに起動し、スケジュールされたタスクを可算単位でチェックします。Crontab (CRON TABLE) は、このような種類の繰り返しタスクをスケジュールできるテーブルです。 。
ヒント: 各ユーザーは、タスクを作成、変更、削除するための独自の crontab を持つことができます。デフォルトでは、cron はユーザーに対して有効になっていますが、/etc/cron.deny ファイルにエントリを追加することでユーザーを制限できます。
Linux の Crontab
Crontab ファイルは 1 行ごとのコマンドで構成され、実際にはスペースまたはタブで区切られた 6 つのフィールドがあります。最初の 5 つのフィールドはタスクの実行時間を表し、最後のフィールドはコマンド用です。
- 分 (0 ~ 59 の値を保持します)
- 時間 (0 ~ 23 の値を保持します)
- 月の日 (1 ~ 31 の値を保持します)
- 年間の月 (1 ~ 12 または 1 月 ~ 12 月 の値を保持します。各月の名前の最初の 3 文字、つまり Jan または Jun<) を使用できます。。)
- 曜日 (0-6 または Sun-Sat の値を保持します。ここでは、各曜日の名前の最初の 3 文字 (Sun または Wed<) を使用することもできます。。)
- コマンド – スケジュールする /path/to/ コマンドまたはスクリプト。
1. Crontab エントリの一覧表示
現在のユーザーの -l
オプションを指定した crontab コマンドを使用してタスクを一覧表示または管理します。
crontab -l
00 10 * * * /bin/ls >/ls.txt
2. Crontab エントリの編集
crontab エントリを編集するには、以下に示すオプション -e
を使用します。以下の例では、スケジュールされたジョブをVIエディタで開きます。必要な変更を加え、設定を自動的に保存する :wq
キーを押すのをやめます。
crontab -e
3. ユーザーのスケジュールされた Cron ジョブを一覧表示する
-u
(ユーザー) および -l
のオプションを使用して、tecmint という特定のユーザーのスケジュールされたジョブを一覧表示するには(リスト)。
crontab -u tecmint -l
no crontab for tecmint
注: 他のユーザーの crontab エントリを表示する完全な権限を持つのは root ユーザーのみです。通常のユーザーは他のユーザーを表示できません。
4. Crontab エントリを削除する
注意: Crontab に -r
パラメータを指定すると、Crontab からの確認なしにスケジュールされたジョブが完全に削除されます。ユーザーの crontab を削除する前に、-i
オプションを使用してください。
crontab -r
5. Crontab を削除する前にプロンプトを表示する
-i
を指定して crontab を実行すると、ユーザーの crontab を削除する前にユーザーに確認を求めるオプションが表示されます。
crontab -i -r
crontab: really delete root's crontab?
6. 使用できる特殊文字 (*、-、/、?、#)
- アスタリスク(*) – フィールド内のすべての値、または任意の可能な値と一致します。
- ハイフン(-) – 範囲を定義します。
- スラッシュ (/) – 最初のフィールド /10 は 10 分ごと、または範囲の増分を意味します。
- カンマ (,) – 項目を区切ります。
7. システム全体の Cron スケジュール
システム管理者は、以下に示すように、事前定義された cron ディレクトリを使用できます。
- /etc/cron.d
- /etc/cron.daily
- /etc/cron.hourly
- /etc/cron.monthly
- /etc/cron.weekly
8. 特定の時間にジョブをスケジュールする
以下のジョブは、毎日午前 12 時 30 分に /tmp から空のファイルとディレクトリを削除します。 crontab コマンドを実行するには、ユーザー名を指定する必要があります。以下の例では、root ユーザーが cron ジョブを実行しています。
crontab -e
30 0 * * * root find /tmp -type f -empty -delete
9. 共通スケジュールの特殊文字列
- @reboot
このコマンドは、システムの再起動時に実行されます。
- @daily
-
1 日 1 回、または @midnight を使用することもできます。
- @weekly
一週間に一度。
- @yearly
年に 1 回。 @annually キーワードも使用できます。
同じものを使用したい場合は、 cron コマンドの 5 つのフィールドをキーワードに置き換える必要があります。
10. 二重アンパサンド(&&)を使用した複数のコマンド
次の例では、command1 と command2 が毎日実行されます。
crontab -e
@daily <command1> && <command2>
11. 電子メール通知を無効にします。
デフォルトでは、cron は cronjob を実行しているユーザー アカウントにメールを送信します。これを無効にしたい場合は、以下の例のように cron ジョブを追加します。ファイルの末尾で >/dev/null 2>&1 オプションを使用すると、cron 結果のすべての出力が /dev/null の下にリダイレクトされます。
[root@tecmint ~]# crontab -e
* * * * * >/dev/null 2>&1
結論: タスクの自動化は、より良い方法で、エラーなく、効率的にタスクを実行するのに役立ちます。端末で「man crontab」コマンドを入力して、詳細については crontab のマニュアル ページを参照してください。