Linux
 Computer >> コンピューター >  >> システム >> Linux

CentOS /RHELLinuxでのCrontabを使用したCronジョブの構成

Cronは、すべてのLinuxディストリビューションを含むUnixベースのシステム用のタスクスケジューラです。 cronデーモンはホストのバックグラウンドで動作し、スケジュールに従ってスケジュールされたタスクを実行します。この記事では、 cronをインストールする方法を示します。 CentOSまたはRHELLinuxを実行しているサーバーで、cron構文を学習し、crontabを使用してcronジョブをスケジュールします。

CentosまたはRHELLinuxにCronをインストールするにはどうすればよいですか?

デフォルトでは、 cron RHELまたはCentOSのインストール直後に利用可能です。何らかの理由でお持ちでない場合は、yumまたはdnfコマンドを使用してベースリポジトリからインストールできます。

#dnf update -y —ホスト上のすべてのパッケージを更新するには
#dnf install crontabs -y —cronをインストールするには

CentOS /RHELLinuxでのCrontabを使用したCronジョブの構成

crondデーモンを有効にして、インストール後に実行します。

#systemctl enable crond.service
#systemctl start crond.service

Crontabを使用してCronジョブを追加するにはどうすればよいですか?

次のコマンドを使用して、cronにタスクを追加できます。

#crontab -e

このコマンドは、デフォルトのテキストエディタ( vim )でユーザーのタスクファイルを開きます。 私の場合は、 nano など、より便利なものに変更できます。 )。タスクを構成するこの方法は、構文エラーを防ぎます。 Crontabでは、エラーを含む構成ファイルを保存できません。

mc:

でcronジョブファイルを手動で編集することもできます。

#mcedit / var / spool / cron / root –ファイル名はユーザーによって異なる場合があります。

cronでbashスクリプトを実行する単純なジョブを追加するには、次のコマンドを入力します。

#crontab -e

次に、タスクスケジュールとスクリプトファイルへのパスを追加します。

* * * * * /root/test.sh

ファイルを保存します(vimでの編集に似ています: Ctrl + Oを押します ファイルを保存してCtrl+ X 終了します。

正しく実行すると、タスクがcronに追加されます。 cronジョブのリストを表示するには、次のコマンドを実行します。

#cat / var / spool / cron / root

* * * * * /root/test.sh

またはこれ:

#crontab -l <​​/ code>

このスクリプトは毎分cronを介して実行されます。

最小時間は1分です。 cronデーモンは、タスクのリストを1分に1回スキャンします。次のファイルとディレクトリをチェックします:

/etc/crontab
/etc/cron.*/.
/var/spool/cron/

各crontabスケジュールエントリは5つのフィールドで構成されています:

minutes hours day_of_a_month months week_day
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed

CentOS /RHELLinuxでのCrontabを使用したCronジョブの構成

各フィールドには、次の有効な値を使用できます。

フィールド 値の範囲
0-59
時間 0-23
月の日 1-31
1-12 またはjanfeb mar apr may jun jul aug sep oct nov dec
平日 0-6 (ここで 0 日曜日)または sun mon tue wed thu fri sat

* 文字は、許可されているすべての値を意味します。サンプルタスクは次のとおりです。

30 00 * * 1 /root/test.sh

タスクのスクリプトは、毎週月曜日の午前00時30分に実行されます。

cronファイルの構文を簡単にするために、いくつかの特殊文字が使用されています:

  • カンマ(、) スケジュール値を分離して、同じタスクを異なる時間に実行するために使用されます。たとえば、毎時15分と30分にタスクを実行する場合は、次のようにスケジュールを設定できます。
15 * * * *
30 * * * *

または、カンマを使用して短い構文を使用します:

15,30 * * * *
  • スラッシュ(/) タスクを繰り返すために使用されます。たとえば、2時間ごとにタスクを実行するとします。 /を使用すると、cronファイルの内容がはるかに短くなります。そうしないと、かなり長くなります。
* */2 * * *
  • ハイフン(-) フィールド内の値の範囲を示します。 1時間の最初または最後の10分間タスクを実行する場合は、ハイフンを使用して範囲を指定します。
0-10 * * * *
50-60 * * * *

cronスケジュールのその他の例を次に示します。

  • 平日の12:00PMと06:00PMに実行: 0 12,18 * * 1-5
  • 30分ごと: * / 30 * * * *
  • 毎週土曜日: 0 0 * * 6
  • 毎週火曜日と木曜日の午前2時: 0 2 * * 2,4

cronで特別な変数を使用することもできます。

変数 説明 構文
@reboot 起動時に1回実行
@yearly

または

@annually

年に1回 0 0 1 1 *
@monthly 月に1回 0 0 1 * *
@weekly 週に1回 0 0 * * 0
@daily 毎日 0 0 * * *
@hourly 毎時 0 * * * *
@midnight 深夜

これは、タスクを毎日実行するために、次のcron構文を使用できることを意味します。

@daily echo "Cron check"

別のユーザーのcrontabファイルを編集できます:

#crontab -u username

Cron通知を電子メールに送信する方法

crontabタスクの実行に関する情報を電子メールで受け取りたい場合は、ジョブを使用してcronファイルを構成する必要があります。

メールを送信するには、サーバーにメールエージェントがインストールされている必要があります。テストを行うために、 sendmailをインストールしました Linuxホストの場合:

#dnf install sendmail -y
#service sendmail start

cronファイルでメールを送信するようにパラメータを設定しましょう。次の行をファイルに追加します。

MAILTO="youremail@gmail.com"
SHELL=/bin/bash
HOME=/
* * * * * echo "Cron check"

SHELL —ユーザーシェル

HOME —cronファイルへのパス

CentOS /RHELLinuxでのCrontabを使用したCronジョブの構成

cronジョブが開始されるたびに、メール通知がメールボックスに送信されます。

cronタスクの実行に関する情報をログファイルに保存できます。これを行うには、 >>を追加します ファイルの最後に移動し、ログファイルへのパスを入力します:

* * * * * echo "Cron check">> /var/log/admin/journal.log

crontabファイルに多くのジョブがあり、それらの一部の結果を電子メールで取得したくない場合は、これらのジョブをサイレントモードで実行できます。

* * * * * echo "Cron check">> / dev / null 2>&1

cron構成ファイルとログ

メインのcron設定ファイルは/etc/crontabです。 cronファイルの他に、次のディレクトリからジョブを実行できます。

  • /etc/cron.daily –スクリプトを1日1回開始する
  • /etc/cron.hourly –…。 1時間に1回
  • /etc/cron.monthly –…。月に1回
  • /etc/cron.weekly –…。週に1回

スケジュールに従って実行するには、ディレクトリの1つにスクリプトファイルを置くだけです。

/etc/cron.allowと/etc/cron.denyを使用して、スケジューラへのアクセスを制限できます。これらのファイルを作成し、cronタスクの実行を許可または拒否されているユーザーを追加するだけで十分です。

/ etc / crontabにジョブを追加できます 同じように。通常、このファイルはrootユーザーによって、またはシステムタスクを構成するために使用されます。 cronジョブの個人ユーザーファイルは/var / spool / cron /に保存されます または/var / cron / tabs /

cronジョブまたはエラーを追跡するには、ログファイルを表示できます: / var / log / cron 。このファイルは、デーモン操作のすべてのタスクとエラーを記録します(存在する場合):

CentOS /RHELLinuxでのCrontabを使用したCronジョブの構成


  1. Zeitを使用してLinuxでCronジョブを簡単に作成する方法

    Cronを使用すると、コマンド、プログラム、およびスクリプトを、定義された時点またはスケジュールで自動的に実行できます。パワフルで軽く、頭を包み込むのも難しいです。そのため、crontabの使用を簡素化しようとするフロントエンドを見つけることができます。Zeitは最高のものの1つです。 Zeitの唯一の目標は、cronジョブの追加と管理を非常に簡単にすることです。 Zeitを使用すると、コマンドとスクリプトの実行は、タスクリストに新しいエントリを追加するのと同じくらい簡単です。 Linuxでcronジョブを簡単に作成する方法を見てみましょう。 インストール ほとんどのLinuxディストリビ

  2. LinuxでVagrantを使い始める

    Linuxを含む最新のオペレーティングシステムは、オペレーティングシステムの仮想化を控えめなPCにもたらすために、近年開発されてきました。ハイパーバイザーを使用して複数のオペレーティングシステムを実行すると、開発者、システム管理者、およびいじくり回し者は、物事をテストして学習するための、小さくて不要な仮想環境をセットアップできます。仮想化がますます普及するにつれて、あなたの生活を楽にすることを約束するソフトウェアがますます出てきます。 Vagrantはそれらのソフトウェアの1つです。今日は、LinuxでVagrantを使い始める方法について説明します。Vagrantとは何か、Vagrantをベ