編集済み 2 数週間前 によって ExtremeHow 編集チーム
クロンウブントゥ自動化リナックススケジューリングオペレーティングシステムシステム管理コマンドラインメンテナンス
翻訳が更新されました 4 数週間前
Ubuntuでcronジョブを設定することは、システム管理者や繰り返しのタスクを自動化する手法を必要とする人にとって重要なスキルです。このガイドでは、Unix系オペレーティングシステムで効率的にタスクを自動化およびスケジューリングするためのツールであるcronとcrontabを探ります。
cronデーモンは、Unix系オペレーティングシステムでバックグラウンドで動作し、スケジュールされたコマンドやスクリプトを実行するサービスです。これらのコマンドやスクリプトは、crontabと呼ばれる特別なファイルに指定されています。各ユーザーは自分自身のcrontabを持っており、システム全体の設定に影響を与えることなくタスクをスケジュールできます。
cronジョブの一般的なユースケースには、毎日深夜にバックアップスクリプトを実行すること、週に一度一時ファイルをクリーンアップすること、定期的にメールレポートを送信することなどがあります。
cronジョブは、crontabファイルで特別な構文で定義されています。cronジョブの基本フォーマットは6つのフィールドで構成されています:
毎朝3時に/home/user/backup.sh
にあるスクリプトを実行するcronジョブの例は次のようになります:
0 3 * * * /home/user/backup.sh
cronジョブを作成または編集するには、crontabファイルにアクセスする必要があります。次のコマンドを使用して、既定のテキストエディタでcrontabを開きます:
crontab -e
このコマンドを実行すると、既定のテキストエディタ(nanoやviなど)で、現在のユーザーに特有のcrontabファイルが開かれます。
crontabでは、スケジューリングを簡潔にするために特殊文字やキーワードが使用できます。代表的な文字を以下に示します:
*
: 任意の値を表します。例えば、「時間」フィールドで*
を使用すると「毎時間」を意味します。,
: 値のリストを指定できます。例えば、「曜日」フィールドで1,2,5
を使うと月曜日、火曜日、金曜日を意味します。-
: 範囲を設定します。「曜日」フィールドで1-5
は月曜日から金曜日を意味します。/
: ステップ値を指定します。「時間」フィールドで*/2
を使うと2時間ごとになります。@reboot
, @yearly
, @monthly
, @weekly
, @daily
, @hourly
があり、自然な形でスケジュールを指定できます。例えば、@dailyは1日に1回のタスク実行を指します。例えば、2時間ごとにスクリプトを実行するcronジョブのエントリは次のようになります:
0 */2 * * * /home/user/script.sh
基本構文と特殊文字を理解したら、自分のcronジョブを書くことができます。例えば、毎日の16:30に/home/user/cleanup.sh
にあるスクリプトを実行したい場合は、crontabに次の行を追加します:
30 16 * * * /home/user/cleanup.sh
ファイルを保存してエディタを終了します。これで新しいcronジョブが設定されました。
現在のユーザーのcronジョブリストを表示するには、次のコマンドを使用します:
crontab -l
このコマンドは現在のユーザーにスケジュールされているすべてのcronジョブを表示します。
cronジョブを削除するには、単にcrontab -e
を使用してcrontabを開き、不要な行を削除してファイルを保存して閉じます。
cronジョブは効率的に使用されると非常に強力です。ここにいくつかの一般的なユースケースを示します:
理解を深めるためのさらにいくつかの例を以下に示します:
0 9 * * 1-5 /path/to/your/script.sh
0 0 1 * * /path/to/your/command
0 7 * * * /usr/bin/sendmail user@example.com < /home/user/email.txt
cronジョブが正常に実行されたかどうかをデバッグするには、cronデーモンがその活動を記録するログファイルを確認します。これらのログは通常/var/log/
ディレクトリにあり、システムによってはsyslog
やcron.log
というファイル名の場合があります。
cronログを表示するには次のコマンドを使用します:
cat /var/log/syslog | grep cron
cronログを含めるまたは除外するために、/etc/rsyslog.d/50-default.conf
ファイルでログ設定を必要に応じて調整します。
cronジョブを管理するためのヒントとベストプラクティスを以下に示します:
この包括的ガイドは、Ubuntuでのcronジョブの動作と効果的なセットアップ方法を理解するためのものです。ガイドラインに従い、例を実践することで、タスクの自動化、時間の節約、およびシステムパフォーマンスの効率的な向上を実現できます。
記事の内容に誤りがある場合, あなたは