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共通ストレージエンジンの機能と使用方法の詳細な説明

推薦する

JavaScript 関数呼び出し、適用、バインド メソッドのケース スタディ

要約する1. 類似点どちらも、ターゲット関数が実行されると内部の this ポインターを変更できます...

XHTML 入門チュートリアル: Web ページのヘッダーと DTD

ヘッドと DTD はページには表示されませんが、Web ページの重要な要素です。 なぜ失敗したのでし...

Node.jsをゼロから学ぶ

目次URL モジュール1. 解析メソッド2. フォーマット方法3. 解決方法イベントモジュール(イベ...

nginxで複数のサーバーを簡単に構成する方法

1: nginx のインストール方法については詳しく説明しません。Baidu で検索してください。 ...

Vue での bimface の使用に関する詳細

目次1. Vue スキャフォールディングをインストールする2. プロジェクトを作成する3.1 プロジ...

JS、CSS スタイルのリファレンスの記述

CS: ... 1. <link type="text/css" href...

Mac に Windows サービスを備えた仮想マシンをインストールする方法

1. 仮想マシンをダウンロードする公式ダウンロードウェブサイト: https://www.vmwar...

タイムスタンプの差を計算するSQLメソッド

タイムスタンプの差を計算するSQLメソッド概要場合によっては、特定のレコードを時間で検索する必要があ...

EXPLAIN を使って MySQL の SQL 実行プランを分析する方法

序文MySQL では、EXPLAIN コマンドを使用して、テーブルの接続方法や SELECT ステー...

背景画像に CSS3 変換を適用するためのソリューション

CSS 変換は便利ですが、背景画像にはまだ適用されていません。この投稿では、背景画像を回転させたい場...

ウェブサイト構築経験概要

<br />注目を集めるウェブサイトを作成するには、どのような原則に従うべきでしょうか?...

MySQL Innodbの主な機能挿入バッファ

目次挿入バッファとは何ですか?挿入バッファのトリガー条件は何ですか?なぜ一意のインデックスにできない...

CSS3でアニメーションを実装する3つの方法

これは、面接者の CSS に関する基本的な知識をテストするものです。 CSSでアニメーションを実装す...

複数のドメイン名、ポート、IP仮想ホストに基づくNginx構成

1. タイプの導入1.1 ドメインベースの仮想ホスティングいわゆるドメイン名ベースの仮想ホストとは、...