ITで作業している場合は、自動化プロセスの一環として、さまざまな反復タスクをスケジュールする必要がある場合があります。
たとえば、特定のジョブを1日の特定の時間に定期的に実行するようにスケジュールできます。これは、毎日のバックアップ、毎月のログアーカイブ、スペースを作成するための毎週のファイル削除などを実行するのに役立ちます。
また、OSとしてLinuxを使用している場合は、これを実現するためにcronジョブと呼ばれるものを使用します。
cronとは何ですか?
Cronは、Unixライクなシステムに存在するジョブスケジューリングユーティリティです。 crondデーモンはcron機能を有効にし、バックグラウンドで実行されます。 cronはcrontabを読み取ります (cronテーブル)事前定義されたスクリプトを実行するため。
特定の構文を使用することにより、スクリプトまたはその他のコマンドが自動的に実行されるようにスケジュールするようにcronジョブを構成できます。
個々のユーザーの場合、cronサービスは次のファイルをチェックします: / var / spool / cron / crontabs
Linuxのcronジョブとは何ですか?
cronを介してスケジュールするタスクは、cronジョブと呼ばれます。 cronジョブは、時間単位、日単位、月単位、または年単位のいずれであっても、日常的なタスクを自動化するのに役立ちます。
それでは、cronジョブがどのように機能するかを見てみましょう。
cronへのアクセスを制御する方法
cronジョブを使用するには、管理者は「/etc/cron.allow」ファイルでユーザーにcronジョブを追加できるようにする必要があります。
このようなプロンプトが表示された場合は、cronを使用する権限がないことを意味します。
Johnがcronを使用できるようにするには、彼の名前を「/etc/cron.allow」に含めます。これにより、Johnはcronジョブを作成および編集できるようになります。
ユーザーは、ファイル'/etc/cron.d/cron.deny'にユーザー名を入力することにより、cronジョブアクセスへのアクセスを拒否することもできます。
Linuxでcronジョブを追加する方法
まず、cronジョブを使用するには、cronサービスのステータスを確認する必要があります。 cronがインストールされていない場合は、パッケージマネージャーから簡単にダウンロードできます。これを使用して確認してください:
# Check cron service on Linux system
sudo systemctl status cron.service
crontabは、cronジョブの追加と一覧表示に次のフラグを使用します。
-
crontab -e
:crontabエントリを編集して、cronジョブを追加、削除、または編集します。 -
crontab -l
:現在のユーザーのすべてのcronジョブを一覧表示します。 -
crontab -u username -l
: 別のユーザーのcronを一覧表示します。 -
crontab -u username -e
: 別のユーザーのcronを編集します。
cronを一覧表示すると、次のように表示されます。
# Cron job example
* * * * * sh /path/to/script.sh
上記の例では、
- * * * * *は、それぞれ分、時間、日、月、平日を表します。
値 | 説明 | |
---|---|---|
分 | 0-59 | コマンドは特定の分に実行されます。 |
時間 | 0-23 | コマンドは特定の時間に実行されます。 |
日数 | 1-31 | コマンドはこれらの月のこれらの日に実行されます。 |
月 | 1-12 | タスクを実行する必要がある月。 |
平日 | 0-6 | コマンドが実行される曜日。ここで、0は日曜日です。 |
-
sh
スクリプトがbashスクリプトであり、/bin/bash
から実行する必要があることを表します 。 -
/path/to/script.sh
スクリプトへのパスを指定します。
以下は、cronジョブ構文の要約です。
* * * * * sh /path/to/script/script.sh
| | | | | |
| | | | | Command or Script to Execute
| | | | |
| | | | |
| | | | |
| | | | Day of the Week(0-6)
| | | |
| | | Month of the Year(1-12)
| | |
| | Day of the Month(1-31)
| |
| Hour(0-23)
|
Min(0-59)
以下は、cronジョブのスケジューリングの例です。
スケジュール | 予定値 |
---|---|
5 0 * 8 * | 8月の00:05。 |
5 4 * * 6 | 日曜日の04:05。 |
0 22 * * 1-5 | 月曜日から金曜日までの毎日22:00。 |
これを一度に把握できなくても大丈夫です。 crontabの第一人者と一緒にcronスケジュールを練習して生成できます。
cronジョブを設定する方法
このセクションでは、cronジョブを使用して単純なスクリプトをスケジュールする方法の例を見ていきます。
-
date-script.sh
というスクリプトを作成します これは、システムの日付と時刻を出力し、それをファイルに追加します。スクリプトを以下に示します。
2.実行権限を付与して、スクリプトを実行可能にします。
chmod 775 date-script.sh
3. crontab -e
を使用してcrontabにスクリプトを追加します 。
ここでは、1分ごとに実行するようにスケジュールしています。
4.ファイルdate-out.txt
の出力を確認します 。スクリプトによると、システムの日付は1分ごとにこのファイルに出力される必要があります。
cronのトラブルシューティング方法
クローンは本当に役に立ちますが、必ずしも意図したとおりに機能するとは限りません。幸い、トラブルシューティングに使用できる効果的な方法がいくつかあります。
- スケジュールを確認してください。
まず、cronに設定されているスケジュールを確認してみてください。上記のセクションで見た構文でそれを行うことができます。
2.cronログを確認します。
まず、cronが意図した時間に実行されたかどうかを確認する必要があります。これは、var/log/cron
にあるcronログから確認できます。 。一部のディストリビューションでは、ログは/var/log/syslog
にあります。
これらのログに正しい時刻にエントリがある場合は、設定したスケジュールに従ってcronが実行されたことを意味します。
以下は、cronジョブの例のログです。タイムスタンプを示す最初の列に注意してください。スクリプトのパスも行末に記載されています。
3。 cron出力をファイルにリダイレクトします。
cronの出力をファイルにリダイレクトし、ファイルにエラーがないか確認できます。
# Redirect cron output to a file
* * * * * sh /path/to/script.sh &> log_file.log
cronジョブのようにタスクを自動化すると、実行する必要のある反復作業が減ります。また、人間の介入なしに、マシンを自動修復して24時間稼働させることもできます。
Linuxでの自動化は、cronジョブに大きく依存しているため、cronを確実に学習し、実験する必要があります。
最後までお読みいただきありがとうございます。フィードバックはいつでも大歓迎です。
この記事が役に立ったと思ったら、友達と共有してください。
Twitterでつながりましょう!