Linux CentOS でスクリプトを定期的に実行するように設定する方法

Linux CentOS でスクリプトを定期的に実行するように設定する方法

多くの場合、サーバーでスクリプトを定期的に実行して操作をトリガーする必要があります。たとえば、Qiniu のツールを使用してアップロードする場合、同期ファイルに新しいファイルが追加されると、必要な同期コマンドを完了するためのスケジュールされたスクリプトを提供できます (Qiniu の qrsbox ツールは自動的に同期します。アップロードを自動的に監視するには、同期フォルダーにファイルを追加するだけです)。

1. crontabをインストールする

[root@CentOS ~]# yum install vixie-cron
[root@CentOS ~]# yum install crontabs

vixie-cron パッケージは cron のメイン プログラムです。

crontabs パッケージは、cron デーモンを駆動するために使用されるテーブルをインストール、アンインストール、または一覧表示するプログラムです。

2. crontabサービスを有効にする

service crond start //サービスを開始する

この cron サービスを開始および停止するには、次の方法を使用します。

service crond start //サービスを開始する

service crond stop // サービスをシャットダウンする

service crond restart //サービスを再起動する

service crond reload //設定を再読み込み

crontab サービスのステータスを表示します: service crond status

crontab サービスを手動で開始します: service crond start

次のコマンドを実行して、crontab サービスが起動時に開始するように設定されているかどうかを確認します: ntsysv

自動起動に追加:

chkconfig –level 35 crond オン

さらに、ntsysv コマンドと chkconfig コマンドについても紹介します。

ntsysv コマンドは、ブート起動を設定するためのグラフィカル インターフェイス管理モードです。このコマンドを使用するには、インストールする必要があります。yum install -y ntsysv をインストールした後は、ntsysv を実行するだけで、グラフィカル管理インターフェイスが表示されます。

上下キー: 中央のボックス内のサービス間を移動するために使用できます。

スペースバー: 必要なサービスを選択するために使用できます。[*] は開始を意味します。

Tab キー: ボックス、OK、キャンセル間を移動できます。

[F1]キー:サービスの説明を表示できます。

chkconfig コマンドライン形式については、起動時に自動的に開始するか、6 つの起動レベルでサービスの実行状態を照会するかを設定します。

起動時に crond サービスが自動的に開始するように設定します。

[root@CentOS ~]# chkconfig crond をオン

各ブートレベルでcrondサービスの実行状態を表示する

[root@CentOS ~]# chkconfig –list crond

crond 0: 無効 1: 無効 2: 有効 3: 有効 4: 有効 5: 有効 6: 無効

レベル 2、3、4、5 で crond サービスが自動的に開始されることがわかります。

crond サービスの自動起動をキャンセルします。

[root@CentOS ~]# chkconfig crond をオフにする

3. 実行するスクリプトを設定する

新しいスケジュール タスクを追加するには、次の 2 つの方法があります。

1) コマンドラインに crontab -e と入力し、対応するタスクを追加して保存して終了します。

2) /etc/crontab ファイルを直接編集し (つまり、vi /etc/crontab)、対応するタスクを追加します。

crontab -e 設定は特定のユーザー用ですが、/etc/crontab の編集はシステム タスク用です。

スケジュールされたタスクを表示する

crontab -l //現在スケジュールされているすべてのタスクを一覧表示します

crontab -l -u jp // ユーザー jp のすべてのスケジュールされたタスクを一覧表示します

タスクスケジューラを削除する

crontab -r //すべてのタスクスケジュールジョブを削除する

vim /etc/crontab を直接編集します。デフォルトのファイル形式は次のとおりです。

シェル=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=ルート
ホーム=/

# 詳細については man 4 crontabs を参照してください

# ジョブ定義の例:
# .---------------- 分 (0 - 59)
# | .------------- 時間 (0 - 23)
# | | .---------- 月日 (1 - 31)
# | | | .------- 月 (1 - 12) または jan、feb、mar、apr ...
# | | | | .---- 曜日 (0 - 6) (日曜日 = 0 または 7) または sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * ユーザー名 実行するコマンド

このテキストの説明は非常に直感的です。

アスタリスク (*): すべての可能な値を表します。たとえば、月フィールドにアスタリスクが含まれている場合、他のフィールドの制約が満たされた後、毎月コマンド操作が実行されることを意味します。

カンマ(,):カンマで区切られた値のリスト範囲を指定できます。例:"1,2,5,7,8,9"

中央バー (-): 整数間の中央バーを使用して整数の範囲を表すことができます。たとえば、「2-6」は「2,3,4,5,6」を意味します。

スラッシュ (/): スラッシュを使用して時間間隔の頻度を指定できます。たとえば、「0-23/2」は 2 時間ごとに実行されることを意味します。同時に、スラッシュはアスタリスクと一緒に使用できます。たとえば、分フィールドで */10 を使用すると、10 分ごとに実行されることを意味します。

以下に、基本的に一般的な状況を網羅した例をいくつか示します。

例1

: : : : : : : : : : : : : : :
# 毎日 4:22 に /etc/cron.daily ディレクトリ内のすべての実行可能ファイルを root として実行します。run-parts パラメータは、次のディレクトリ内のすべての実行可能ファイルが実行されることを示します。

例2

#毎晩21:30にApacheを再起動する
30 21 * * * /usr/local/etc/rc.d/lighttpd を再起動
#毎月1日、10日、22日の4:45にApacheを再起動する
45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpdを再起動
#毎週土曜日と日曜日の1:10にApacheを再起動する
10 1 * * 6,0 /usr/local/etc/rc.d/lighttpdを再起動
#毎日18:00から23:00まで30分ごとにApacheを再起動します
0,30 18-23 * * * /usr/local/etc/rc.d/lighttpd 再起動
#毎週土曜日の午後11時にApacheを再起動する
0 23 * * 6 /usr/local/etc/rc.d/lighttpdを再起動
#午後11時から午前7時まで1時間ごとにApacheを再起動します
0 23-7/1 * * * /usr/local/etc/rc.d/lighttpd 再起動
#1時間ごとにApacheを再起動する
0 */1 * * * /usr/local/etc/rc.d/lighttpd を再起動
#毎月4日と毎週月曜から水曜の11時にApacheを再起動します
0 11 4 * 月〜水 /usr/local/etc/rc.d/lighttpd 再起動
#1月1日4時にApacheを再起動
0 4 1 jan * /usr/local/etc/rc.d/lighttpd を再起動
#30分ごとに時間を同期する 0/30 * * * * /usr/sbin/ntpdate 210.72.145.44

知らせ

* *1 * * * このコマンドは、毎時間ごとに 1 分ごとに実行されることを意味します。

実行する各時間の分数を指定する必要があります。つまり、最初の * を数字に変更する必要があります。

* は 1 分ごとに表されるからです。

/1 と hour の間に違いはありません。どちらも 1 時間に 1 回です。

*/2 と設定した場合、タイミング設定開始から 2 時間後ではなく、2 で割り切れる時間数後に実際に実行されます。例えば、9 時に設定した場合、10 時に実行されます。

最後に、次のような問題が発生する可能性があります。

表示するには、rootユーザーとしてcrontab -lと入力します。

root 用の crontab はありません。例:

[root@CentOS ~]# crontab -l

ルート用のcrontabがない

この問題は非常に簡単です。また、root ユーザーとして crontab -e と入力します。

Escキーを押します。wq Enterキーを押します。

crontab -lと入力しても問題はありません

主な理由は、この Linux サーバーが crontab を使用するのは今回が初めてであり、対応するファイルがまだ生成されていないことです。編集 (crontab -e) を実行すると、このファイルが生成されます。

Linux CentOS でスケジュールされたスクリプトを構成する方法は以上です。これが参考になれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • CentOS で指定されたスクリプトを実行するスケジュールされたタスクを設定する方法
  • CentOS7 スケジュールされたタスクの設定
  • Linux CentOS で crontab を使用してスケジュールされた再起動を設定する方法
  • Linux crontab スケジュールタスクの設定方法(詳細説明)

<<:  Node.js での組み込みモジュールとカスタムモジュールの実装

>>:  MySQL共通ストレージエンジンの機能と使用方法の詳細な説明

推薦する

Linux学習におけるmkdirコマンドの詳しい説明

目次序文1. ファイルの概念に関する基礎知識2. mkdir コマンド序文最近、Linux にますま...

Reactは二次的連鎖効果(階段効果)を実現する

この記事では、二次リンク効果を実現するためのReactの具体的なコードを参考までに共有します。具体的...

mysql replace into の使用法の詳細な説明

replace ステートメントは、一般的に insert ステートメントに似ています。ただし、テーブ...

MySQL が uuid または snowflake id を主キーとして使用することを推奨しない理由の詳細な分析

前書き: MySQL でテーブルを設計する場合、MySQL では UUID や非連続かつ非繰り返しの...

システムメンテナンスページにリダイレクトするように nginx を設定する

先週末、兄弟プロジェクトはより良いサービスを提供するためにサーバーを拡張する準備をしていました。兄弟...

HTML に埋め込まれた Flash HTML ウェブページ コードに Flash ファイルを埋め込むソリューション (パート 1)

中国の習慣では、旧暦の1月15日より前に新年を祝います。ここで、庭にいる友人たちに新年の幸せを祈りた...

Django は Pillow を使用して検証コード機能を簡単に設定します (Python)

1. モジュールをインポートし、検証状態を定義する PIL から Image、ImageDraw、...

CSSがページのレンダリングをブロックするかどうかについての簡単な説明

おそらく誰もが js の実行によって DOM ツリーの解析とレンダリングがブロックされることを知って...

MySQL シリーズ 8 MySQL サーバー変数

チュートリアルシリーズMySQL シリーズ: MySQL リレーショナル データベースの基本概念My...

CentOS 7.2 に SuPHP をインストールするための詳細な手順

デフォルトでは、CentOS 7 上の PHP は apache または nobody として実行さ...

js で虫眼鏡効果を実現するためのアイデアとコード

この記事の例では、虫眼鏡効果を実現するためのjsの具体的なコードを参考までに共有しています。具体的な...

Element UI を使用してページにページング ナビゲーション バーを追加する方法

必要ページング バーを追加します。これにより、ページにジャンプしたり、ページ番号に従って特定のページ...

Linux で SVN サーバーをインストールする方法

1. Yumのインストール yum でサブバージョンをインストール 2. 構成1. 倉庫を作る/ho...

MySQL における Decimal 型と Float Double 型の違い (詳細説明)

MySQL には、10 進数などの標準データ型だけでなく、float や double などの非標...

レム適応の一般的なパッケージ3つについて

序文以前、rem適応についての記事を書きましたが、具体的なパッケージは紹介しませんでした。今日は、よ...