LinuxのスケジュールタスクCrontabコマンドの詳細説明
Linux システムは cron (crond) システム サービスによって制御されます。 Linux システムには計画されたタスクが多数あるため、このシステム サービスはデフォルトで開始されます。さらに、ユーザーがスケジュールされたタスクを自分で設定することもできるため、Linux システムでは、ユーザーがスケジュールされたタスクを制御するためのコマンド (crontab コマンド) も提供しています。
1. crond の概要
crond は、特定のタスクを定期的に実行したり、特定のイベントの処理を待機したりするために使用される Linux のデーモン プロセスです。これは、オペレーティング システムのインストール時に実行されるスケジュールされたタスクに似ています。このサービスツールをインストールすると、crond プロセスが自動的に起動され、実行すべきタスクがあるかどうかを 1 分ごとに定期的に確認します。実行すべきタスクがある場合、そのタスクは自動的に実行されます。
Linux でのタスク スケジューリングは、システム タスク スケジューリングとユーザー タスク スケジューリングの 2 つのカテゴリに分類されます。
システムタスクのスケジューリング: キャッシュされたデータのハードディスクへの書き込み、ログのクリーニングなど、システムが定期的に実行するタスク。 /etc ディレクトリには、システム タスク スケジューリングの構成ファイルである crontab ファイルがあります。
/etc/crontab ファイルには次の行が含まれています:
cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO= HOME=/
# run-parts
51 * * * * root run-parts /etc/cron.hourly
24 7 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly
最初の 4 行は、crond タスクを実行するための環境変数を設定するために使用され、最初の行は次の内容を指定しますSHELL 変数 システムが使用するシェル。ここでは bash です。 2 行目の PATH 変数は、コマンドを実行するためのシステムのパスを指定します。 3 行目の MAILTO 変数は、crond タスクの実行情報を指定します。 MAILTO 変数の値が空の場合、4 行目の HOME 変数は、コマンドまたはスクリプトの実行時に使用されるホーム ディレクトリを指定します。 6 行目から 9 行目までの意味については、次のセクションで詳しく説明します。ここで言うことはあまりありません。
ユーザータスクのスケジュール: ユーザーデータのバックアップ、定期的な電子メールリマインダーなど、ユーザーが定期的に実行する必要があるタスク。ユーザーは crontab ツールを使用して、スケジュールされたタスクを独自にカスタマイズできます。ユーザー定義の crontab ファイルはすべて /var/spool/cron ディレクトリに保存されます。ファイル名はユーザー名と一致します。
ユーザー権限ファイル:
ファイル:
/etc/cron.deny
説明:
このファイルにリストされているユーザーは、crontab コマンドの使用を許可されていません
ファイル:
/etc/cron.allow
説明:
このファイルにリストされているユーザーは crontab コマンドの使用を許可されています
ファイル:
/var/spool/cron/
説明:
すべてのユーザーの crontab ファイルが保存されるディレクトリの名前は次のとおりですユーザー名
crontab ファイル 意味:
ユーザーが作成した crontab ファイルでは、各行がタスクを表し、各行の各フィールドが設定を表し、その形式は 6 つのフィールドに分かれており、最初の 5 つのセグメントは次のようになります。 6 番目のセグメントは、次の形式で実行されるコマンド セグメントです:
分 時 日 月 週 コマンド
ここで:
分: 分を表し、0 ~ 59 の任意の整数を指定できます。
hour: 時間を表し、0 から 23 までの任意の整数を指定できます。
day: 日付を表し、1 から 31 までの任意の整数を指定できます。
month: 月を示します。1 から 12 までの任意の整数を指定できます。
week: 曜日を示します。0 から 7 までの任意の整数を指定できます。0 または 7 は日曜日を表します。
コマンド: 実行するコマンドは、システムコマンドまたは自分で作成したスクリプトファイルです。
上記の各フィールドでは、次の特殊文字も使用できます:
スター (*): たとえば、月フィールドがアスタリスクの場合、制約の後であることを意味します。他のフィールドが満たされている このコマンドを毎月実行します。
カンマ (,): カンマ区切りの値を使用してリスト範囲を指定できます (例: "1,2,5,7,8,9")
ハント (-): ハイフンを使用できますbetween integers 「2-6」は「2,3,4,5,6」を意味するなど、整数の範囲を表します
スラッシュ (/): スラッシュを使用して、次のように時間間隔の頻度を指定できます。 「0-23/2」は2時間ごとに実行されることを意味します。同時に、*/10 のようにスラッシュをアスタリスクと一緒に使用することもできます。分フィールドで使用すると、10 分ごとに実行されることになります。
2. Crondサービス
crontabをインストールします:
yum install crontabs
サービス操作手順:
/sbin/service crond start //サービスを開始します
/sbin/service crond stop //サービスを終了します
/sbin /service crond restart //サービスを再起動します
/sbin/service crond reload //設定を再読み込みします
/sbin/service crond status //サービスを開始します
crontabサービスが開始するように設定されているか確認します起動時に次のコマンドを実行します:
ntsysv
起動時に自動起動を追加します:
chkconfig –level 35 crond on
3 crontab コマンドの詳細な説明
1.コマンド形式:
crontab [-u user] file
crontab [-u user] [ -e | -l -r ]
2.コマンド機能:
crontab コマンドを使用すると、指定したシステム コマンドまたはシェル スクリプトを一定の間隔で実行できます。時間間隔の単位は、分、時間、日、月、週、または上記の任意の組み合わせにすることができます。このコマンドは、定期的なログ分析やデータのバックアップなどのタスクに非常に適しています。
3.コマンドパラメータ:
-u user: 特定のユーザーの crontab サービスを設定するために使用されます。たとえば、「-u ixdba」は、ixdba ユーザーの crontab サービスを設定することを意味します。このパラメーターは通常、root ユーザーによって実行されます。
file: file はコマンド ファイルの名前です。これは、そのファイルが crontab のタスク リスト ファイルとして使用され、crontab にロードされることを意味します。このファイルがコマンドラインで指定されていない場合、crontab コマンドは標準入力 (キーボード) に入力されたコマンドを受け入れ、それらを crontab にロードします。
-e: ユーザーの crontab ファイルの内容を編集します。ユーザーが指定されていない場合は、現在のユーザーの crontab ファイルを編集することを意味します。
-l: 特定のユーザーの crontab ファイルの内容を表示します。ユーザーが指定されていない場合は、現在のユーザーの crontab ファイルの内容を表示することを意味します。
-r: /var/spool/cron ディレクトリからユーザーの crontab ファイルを削除します。ユーザーが指定されていない場合は、デフォルトで現在のユーザーの crontab ファイルが削除されます。
-i: ユーザーの crontab ファイルを削除するときに確認プロンプトを表示します。
4.一般的に使用される方法:
1) 新しい crontab ファイルを作成します
cron プロセスに crontab ファイルを送信することを検討する前に、最初に行うことは環境変数 EDITOR を設定することです。 cron プロセスは、これを使用して、crontab ファイルの編集に使用するエディタを決定します。 9 UNIX および LINUX ユーザーの 9% が vi を使用している場合は、$HOME ディレクトリ内の . プロファイル ファイルを編集し、次の行を追加します。出口 。
# (ここに独自のイニシャルを入力してください) 日付をコンソールにエコーします
# 午後 6 時から午前 6 時までの 15 分ごとに
0,15,30,45 18-06 * * * /bin/echo 'date' > dev/console
保存して終了します。最初の 5 つのフィールドがスペースで区切られていることを確認してください。
上記の例では、システムは現在の時刻を 15 分ごとにコンソールに出力します。システムがクラッシュまたはハングした場合、最後に表示された時刻により、システムが動作を停止した時間が一目でわかります。一部のシステムでは、tty1 がコンソールを表すために使用され、上記の例は実際の状況に応じて変更できます。作成したばかりの crontab ファイルを送信するには、この新しく作成したファイルを引数として cron コマンドに渡すことができます:
$ crontab davecron
ファイルが cron プロセスに送信されたので、ファイルは cron プロセスに送信され、1 回ごとに実行されます。 5分。
同時に、新しく作成されたファイルのコピーが /var/spool/cron ディレクトリに配置され、ファイル名はユーザー名 (つまり dave) になります。
2) crontab ファイルを一覧表示する
crontab ファイルを一覧表示するには、次のコマンドを使用できます:
$ crontab -l
0,15,30,45,18-06 * * * /bin/echo `date` > ; dev/tty1
上記と同様の内容が表示されます。この方法を使用して、$H O M E ディレクトリに crontab ファイルのバックアップを作成できます:
$ crontab -l > $HOME/mycron
このように、誤って crontab ファイルを削除した場合でも、次の方法を使用できます。前のセクションで説明した、すぐに回復する方法。
3). crontab ファイルを編集します
crontab ファイル内のエントリを追加、削除、または編集する場合、EDI TO R 環境変数が vi に設定されている場合は、vi を使用して対応する crontab ファイルを編集できます。コマンドは次のとおりです:
$ crontab -e
は、vi を使用して他のファイルを編集するのと同じように、crontab ファイルを変更して終了できます。一部のエントリが変更されたり、新しいエントリが追加された場合、cron はファイルの保存時に必要な整合性チェックを実行します。いずれかのフィールドの値が許容範囲外である場合は、プロンプトが表示されます。
crontab ファイルを編集すると、新しいエントリが追加される場合があります。たとえば、次のコードを追加します:
# DT:delete core files,at 3.30am on 3.30 on each month of 1,7,14,21,26,26 days
30 3 1,7,14,21,26 * * /bin/find -name “core' -exec rm {} ;
ここで保存して終了します。機能や実行時間などがわかるように、crontab ファイルの各エントリにコメントを追加することをお勧めします。重要なのは、これがどのユーザーのジョブであるかを知ることです。次に、前述の crontab -l コマンドを使用して、その情報をすべてリストしてみましょう:
$ crontab -l
# (crontab は 1999 年 5 月 4 日 火曜日 13:07:43 にインストールされました)
# DT: 30 分ごとにコンソールに日付を送信します
0,15,30,45 18-06 * * * /bin/echo `date` > /dev/tty1
# DT: コア ファイルを削除します、毎月 1,7,14,21,26,26 日の午前 3 時 30 分
30 3 1,7,14,21,26 * * /bin/find -name “core ' -exec rm {} ;
4) crontab ファイルを削除します
crontab ファイルを削除するには、
$ crontab -r
5) を使用します。
誤って crontab ファイルを削除した場合は、$H O M E ディレクトリにバックアップがまだあると仮定して、それを /var/spool/cron/
$ crontab
ここで、
このファイルのコピーを $H O M E ディレクトリに保存することをお勧めします。私も同様の経験があり、何度か誤って crontab ファイルを削除してしまいました (r キーが e キーのすぐ右側にあるため)。このため、一部のシステム ドキュメントでは、crontab ファイルを直接編集せず、ファイルのコピーを編集して新しいファイルを再送信することを推奨しています。
一部の crontab の亜種は少し奇妙であるため、crontab コマンドを使用するときは特に注意してください。オプションを省略すると、crontab が空のファイルを開いたり、空のファイルのように見える場合があります。このとき、
5.使用例
インスタンス 1: 1 分ごとに
コマンドを実行:
* * * * * コマンド
インスタンス 2: 毎時 3 分と 15 分に
コマンドを実行:
3,15 * * * * コマンド
インスタンス 3: 午前 8 時から午前 11 時までの 3 分目と 15 分目に実行
コマンド:
3,15 8-11 * * * コマンド
インスタンス 4: 2 日おきの午前 8 時 3 分目と 15 分目に実行
コマンドを実行する時間:
3,15 8-11 */2 * * command
例5: 毎週月曜日の午前8時から11時までの3分目と15分目
コマンドを実行する時間:
3,15 8-11 * * 1 コマンド
インスタンス 6: 毎晩 21:30 に smb を再起動します
コマンド:
30 21 * * * /etc/init.d/smb restart
インスタンス 7: 再起動毎月 1 日、10 日、22 日の 4:45 に smb を実行します
コマンド:
45 4 1,10,22 * * /etc/init.d/smb restart
インスタンス 8: 毎週土曜日、smb を再起動します日曜日の 1:10
コマンド:
10 1 * * 6,0 /etc/init.d/smb restart
インスタンス 9: 毎日 18:00 から 23:00 まで 30 分ごとに smb を再起動します
コマンド:
0,30 18-23 * * * /etc/init.d/smb restart
インスタンス 10: 毎週土曜日午後 11:00 に smb を再起動します
コマンド:
0 23 * * 6 /etc/ init.d/smb restart
インスタンス 11: 1 時間ごとに smb を再起動します
コマンド:
* */1 * * * /etc/init.d/smb restart
インスタンス 12: 午後 11 時から午前 7 時までの間、1 時間ごとに smb を再起動します
コマンド:
* 23-7/1 * * * /etc/init.d/smb restart
インスタンス 13: 毎月 4 日と毎週月曜日から水曜日の 11 時に smb を再起動します
コマンド:
0 11 4 * mon -wed /etc/init.d/smb restart
例 14: 1 月 1 日 4 時に smb を再起動します
コマンド:
0 4 1 jan * /etc/init .d/smb restart
例 15 : /etc/cron.hourly ディレクトリ内のスクリプトを 1 時間ごとに実行します
コマンド:
01 * * * * root run-parts /etc/cron.hourly
指示:
run-parts このパラメータを削除すると、ディレクトリ名の代わりに、実行するスクリプトの名前を記述することもできます。 4. 使用上の注意事項
環境変数の問題に注意してください
時々 crontab を作成しますが、このタスクは自動的に実行されませんが、問題はありません。このタスクを手動で実行する場合、この状況は通常、環境変数が crontab ファイルで構成されていないことが原因で発生します。
crontab ファイルで複数のスケジュール タスクを定義する場合、特に注意が必要な問題の 1 つは環境変数の設定です。これは、タスクを手動で実行するときは、当然ながら現在のシェル環境で実行するためです。システムが自動的にタスクのスケジュールを実行する場合、環境変数はロードされないため、タスクの実行に必要なすべての環境変数を crontab ファイルに指定する必要があります。タスクのスケジューリングを実行します。
0 */3 * * * /usr/local/apache2/apachectl restart >/dev/null 2>&1
"/dev/null 2>&1" は、最初に標準出力を /dev/null にリダイレクトし、次にリダイレクトすることを意味します標準出力が/dev/nullにリダイレクトされるため、標準エラーも/dev/nullにリダイレクトされ、ログ出力の問題は解決されます。
システムレベルのタスクスケジューリングとユーザーレベルのタスクスケジューリング
システムレベルのタスクスケジューリングは主にシステムの一部のメンテナンス操作を完了し、ユーザーレベルのタスクスケジューリングは主にいくつかのユーザー定義タスクを完了します。ユーザーレベルのタスクスケジューリングを配置できます。システム レベルのタスク スケジューリングでは完了します (推奨されません)。ただし、その逆は機能しません。root ユーザーのタスク スケジューリング操作は、「crontab –uroot –e」を使用して設定することも、スケジュールされたタスクを /etc に直接書き込むこともできます。システムを定期的に再起動するタスクを定義する場合は、システムを定期的に再起動するタスクを root ユーザーの下で作成する必要があることに注意してください。無効。
その他の注意事項
新しく作成された cron ジョブはすぐには実行されません。実行には少なくとも 2 分かかります。 cron が再起動されると、すぐに実行されます。
crontab が突然失敗した場合は、/etc/init.d/crond restart を試して問題を解決できます。または、ログをチェックして、ジョブが実行されたか、エラー tail -f /var/log/cron が報告されたかどうかを確認します。
crontab -r をランダムに実行しないでください。ユーザーの Crontab ファイルを Crontab ディレクトリ (/var/spool/cron) から削除します。ユーザーを削除すると、すべての crontab が失われます。
% は crontab では特別な意味を持ち、改行を意味します。これを使用する場合は、% をエスケープする必要があります。たとえば、頻繁に使用される日付「+%Y%m%d」は crontab では実行されないため、日付「+%Y%m%d」に置き換える必要があります。
関連する推奨事項:
Linux のスケジュールされたタスク crontab の詳細な説明
PHP のスケジュールされたタスク crontab の詳細な説明について
以上がLinuxのスケジュールタスクCrontabコマンドの詳細説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









Dockerプロセス表示方法:1。DockerCLIコマンド:Docker PS; 2。SystemDCLIコマンド:SystemCTL Status Docker; 3。CLIコマンドを作成するDocker:Docker-Compose PS。 4。プロセスエクスプローラー(Windows); 5。 /procディレクトリ(Linux)。

VSコードシステムの要件:オペレーティングシステム:オペレーティングシステム:Windows 10以降、MACOS 10.12以上、Linux Distributionプロセッサ:最小1.6 GHz、推奨2.0 GHz以上のメモリ:最小512 MB、推奨4 GB以上のストレージスペース:最低250 MB以上:その他の要件を推奨:安定ネットワーク接続、XORG/WAYLAND(Linux)

VSコード拡張機能のインストールの理由は、ネットワークの不安定性、許可不足、システム互換性の問題、VSコードバージョンが古すぎる、ウイルス対策ソフトウェアまたはファイアウォール干渉です。ネットワーク接続、許可、ログファイル、およびコードの更新、セキュリティソフトウェアの無効化、およびコードまたはコンピューターの再起動を確認することにより、問題を徐々にトラブルシューティングと解決できます。

VSコードはMacで利用できます。強力な拡張機能、GIT統合、ターミナル、デバッガーがあり、豊富なセットアップオプションも提供しています。ただし、特に大規模なプロジェクトまたは非常に専門的な開発の場合、コードと機能的な制限がある場合があります。

VSコードは、Microsoftが開発した無料のオープンソースクロスプラットフォームコードエディターと開発環境であるフルネームVisual Studioコードです。幅広いプログラミング言語をサポートし、構文の強調表示、コード自動完了、コードスニペット、および開発効率を向上させるスマートプロンプトを提供します。リッチな拡張エコシステムを通じて、ユーザーは、デバッガー、コードフォーマットツール、GIT統合など、特定のニーズや言語に拡張機能を追加できます。 VSコードには、コードのバグをすばやく見つけて解決するのに役立つ直感的なデバッガーも含まれています。

NotePadはJavaコードを直接実行することはできませんが、他のツールを使用することで実現できます。コマンドラインコンパイラ(Javac)を使用してByteCodeファイル(filename.class)を生成します。 Javaインタープリター(Java)を使用して、バイトコードを解釈し、コードを実行し、結果を出力します。

Linuxの主な用途には、1。Serverオペレーティングシステム、2。EmbeddedSystem、3。Desktopオペレーティングシステム、4。開発およびテスト環境。 Linuxはこれらの分野で優れており、安定性、セキュリティ、効率的な開発ツールを提供します。

Visual Studio Code(VSCODE)は、Microsoftが開発したクロスプラットフォーム、オープンソース、および無料のコードエディターです。軽量、スケーラビリティ、および幅広いプログラミング言語のサポートで知られています。 VSCODEをインストールするには、公式Webサイトにアクセスして、インストーラーをダウンロードして実行してください。 VSCODEを使用する場合、新しいプロジェクトを作成し、コードを編集し、コードをデバッグし、プロジェクトをナビゲートし、VSCODEを展開し、設定を管理できます。 VSCODEは、Windows、MacOS、Linuxで利用でき、複数のプログラミング言語をサポートし、マーケットプレイスを通じてさまざまな拡張機能を提供します。その利点には、軽量、スケーラビリティ、広範な言語サポート、豊富な機能とバージョンが含まれます
