編集済み 4 数か月前 によって ExtremeHow 編集チーム
フェドラクロンタスクスケジュール自動化コマンドラインターミナルシステム管理設定ソフトウェアコンピュータ
翻訳が更新されました 4 数か月前
タスクのスケジュールは、Linux環境でのサーバー管理と自動化の重要な部分です。非常に人気のあるLinuxディストリビューションであるFedoraでは、タスクスケジューリングの最も一般的なツールの1つがcronです。CronはUnix系オペレーティングシステムの時間ベースのジョブスケジューラで、指定された間隔や時間にスクリプトやコマンドを自動的に実行します。システムのメンテナンスやバックアップ、監視、または繰り返しのタスクを自動化するために使用できます。この包括的なガイドでは、cronを使用してFedoraでタスクをスケジュールする方法を説明します。
Cronは、タスクスケジューリングを管理するためにcrontab(cronテーブルの短縮形)という構成ファイルを使用します。システム上の各ユーザーは自分のcrontabファイルを持つことができます。crontabファイルの各行はスケジュールされたタスクを表します。Cronは各ユーザーのcrontabの内容をチェックし、それに定義されたタスクを実行します。これらのタスクは、コマンドとスケジュールで構成されています。
crontabエントリの基本的な構文は以下の通りです:
* * * * * command_to_run
この構文は次のことを意味します:
この例として、以下のようなエントリがあります:
30 2 * * 1 /home/user/backup.sh
このcronジョブは、毎週月曜日(1が月曜日を表します)に午前2時30分に/home/user/backup.sh
スクリプトを実行します。各部分をより詳細に見て、このツールをどのように利用するかを学びましょう。
ほとんどのFedoraインストールには、デフォルトでcronサービスがインストールされています。もしインストールされていない場合は、簡単に追加できます。cronがインストールされていることを確認するには、以下のコマンドを使用します:
sudo dnf install cronie
上記のコマンドはクロンジョブを管理するクロンデーモンをインストールします。インストール後、サービスが実行中であることを確認します:
sudo systemctl start crond
sudo systemctl enable crond
start
コマンドはcronサービスを開始し、enable
コマンドは起動時に自動的に起動することを保証します。
ユーザーはcrontabファイルを作成してタスクをスケジュールできます。これを行うには、次のコマンドを入力します:
crontab -e
上記のコマンドは、cronジョブを書き込めるエディタを開きます。crontabを初めて使用する場合は、エディタの選択を求められることがあります。お気に入りのテキストエディタ(nanoやvimなど)を選択します。
crontabを編集する際は、各cronジョブコマンドが前述の構文で正しく指定されていることを確認することが重要です。タスクを追加した後、ファイルを保存してエディタを終了します。Cronは変更を自動的に登録します。
crontabファイルへのアクセスとcronジョブの作成方法がわかったところで、いくつかの一般的な例を見てみましょう:
0 * * * * /home/user/hourly-task.sh
これは、毎時間の開始時にホームディレクトリからhourly-task.sh
を実行します。
30 14 1 3 * echo "Remember to check logs" >> /home/user/notes.txt
このコマンドは3月1日午後2時30分にnotes.txt
にリマインダーメモを追加します。
0 0 * * 0/2 /home/user/cleanup.sh
この設定では、cleanup.sh
は毎月曜日午前0時に実行されます。
Cronはユーザーの.bashrc
、.profile
または類似のファイルから環境変数をロードしません。そのため、スクリプトが特定の環境変数に依存している場合、crontabファイル内で直接それらを定義することができます:
PATH=/usr/local/bin:/bin:/usr/bin:/home/user/bin
30 1 * * * /home/user/some_command --options
各cronジョブは特定の環境で実行されるため、crontabファイル内で正しいパスと変数が設定されていることを確認することが重要です。
Cronは、スケジュールを簡素化するために、五つの時間および日付フィールドの代わりにいくつかの文字列を使うことを許可しています:
@reboot
: 起動後に一度実行します。@yearly
または@annually
: 年に一度実行、例ええば0 0 1 1 *
。@monthly
: 月に一度実行、例ええば0 0 1 * *
。@weekly
: 週に一度実行、例ええば0 0 * * 0
。@daily
: 一日に一度実行、例ええば0 0 * * *
。@hourly
: 一時間ごとに実行、例ええば0 * * * *
。これらの事前定義された文字列はcrontabエントリをより読みやすく、書くのを速くします。
例えば、daily-maintenance.sh
スクリプトを一日一度実行するには、次のように使用します:
@daily /home/user/daily-maintenance.sh
デフォルトでは、cronは出力(stdoutとstderrの両方)をローカルマシンのユーザーのメールに送信します。ファイルにリダイレクトしたい場合、コマンドを以下のように変更できます:
* * * * * /home/user/script.sh > /home/user/logfile 2>&1
ここで、2>&1
は標準エラー(stderr)を標準出力(stdout)にリダイレクトし、出力はlogfile
に書き込まれます。
現在のユーザーのすべてのcronジョブをリストするには、次を入力します:
crontab -l
現在のユーザーのcrontabファイルを削除するには、次を使用します:
crontab -r
デバッグは難しい場合があります。cronは独自の環境を持ち、デフォルトではユーザーシェルの設定をロードしないからです。ここにいくつかのトラブルシューティングステップを示します:
/var/log/cron
またはFedoraでjournalctl
コマンドを使用して見つけることができます。基本的なスケジューリングはほとんどのタスクを処理しますが、複雑なスケジューリングニーズに対して高度な技術を使用できます:
crontabの任意のフィールドに値のリストを指定できます。例えば、毎月の1日と15日にタスクを実行するには:
0 0 1,15 * * /home/user/payroll.sh
ステップ値を使用すると、範囲内の間隔を指定できます。例えば、10分ごとにタスクを実行するには:
*/10 * * * * /home/user/check-system.sh
*/10
シンボルは「10分ごとに」を意味します。
CronはFedoraや他の多くのUnix系システムで使用可能な、タスク自動化のための強力で多用途なツールです。時間間隔を正確に設定し、繰り返しのタスクをスクリプト化することで、システム管理者やユーザーは生産性とシステムの信頼性を大幅に向上させることができます。Cronの機能を理解し使用することで、常に手動の注目や介入を必要とするタスクを効率的にスケジューリングし、手作業を大幅に減らすことができます。
このガイドをもとに、Fedoraでcronジョブのセットアップと管理方法について確かな理解を持てているはずです。基本的なスケジューリング、環境変数の使用、出力のリダイレクト、または高度なスケジューリング技術であれ、cronは特定のニーズに合ったタスク管理をカスタマイズする多くのオプションを提供します。
cronパッケージをさらに探求し、操作を合理化するのに役立つさまざまなジョブを試して追加のオプションと可能性に飛び込んでください。自動化は効果的なシステム管理の鍵であり、cronの習得はLinuxユーザーにとって不可欠なスキルです。タスクスケジュールを繰り返し改良し、システムを円滑かつ効率的に稼働させるためにcronの力を利用してください。
記事の内容に誤りがある場合, あなたは