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

推薦する

Docker コンテナにおける Patroni の簡単な分析

目次イメージの作成ファイル構造Dockerファイルエントリポイント関数ファイルを生成するイメージを構...

Dockerはnextcloudを使用してプライベートBaiduクラウドディスクを構築します

突然、ドキュメントの保存と共同作業のためのプライベート サービスを構築する必要がありました。多くの場...

ネイティブjsは9マスグリッドのドラッグアンドドロップを実現します

ネイティブJSを使用して9つの正方形のグリッドを記述し、9つのグリッドの位置をドラッグして変更する効...

Vue はユーザーのログイン状態を維持します (さまざまなトークン保存方法)

目次クッキーの設定方法クッキーのデメリット: LocalStorage と SessionStora...

MySQL がデータの削除と挿入に非常に時間がかかる問題の解決策

会社の開発者がテスト環境で挿入ステートメントを実行すると、正常に実行されるまでに 10 秒以上かかり...

MySQL コマンドライン操作中のエンコードの問題の詳細な説明

1. MySQLデータベースのエンコーディングを確認する mysql -u ユーザー名 -p パスワ...

ハッシュテーブルのJavaScript実装の詳細な説明

目次1. ハッシュテーブルの原理2. ハッシュテーブルの概念3. ハッシュ競合問題1. チェーンアド...

MySQLのサブクエリユニオンの効率性についての簡単な説明と

最近の製品テストでは、同時呼び出し数が 10 未満の場合に応答時間が 100 ミリ秒以内に維持できな...

JavaScriptイベント実行メカニズムの深い理解

目次序文ブラウザJS非同期実行の原理ブラウザのイベントループ実行スタックとタスクキューマクロタスクと...

Vue で 3D タグ クラウドを実装するための詳細なコード

プレビュー: コード:ページセクション: <テンプレート> <div class=...

MySQL の null 可能フィールドは NULL に設定する必要がありますか、それとも NOT NULL に設定する必要がありますか?

MySQL を頻繁に使用する人は、次のような状況に遭遇する可能性があります。 1. フィールド タ...

Vue で SVG アイコンを導入する 2 つの方法

Vue で SVG アイコンを導入する方法Vue で svg アイコンを導入する方法 1インストール...

Docker クロスホストネットワークの実装 (手動)

1. Macvlan の紹介Macvlan が登場する前は、イーサネット カードに複数の IP ア...

Web 開発の面接と筆記試験に必須の知識(必読)

HTML のインライン要素とブロックレベル要素の違い:標準的なドキュメント フローでは、ブロック ...

JSの矢印関数におけるこのポイントの詳細な説明

矢印関数は ES6 の新機能です。独自の this はありません。その this ポイントは外部のコ...