Crontab は、Unix/Linux システムで一般的に使用されるスケジュールされた実行ツールであり、手動介入なしで指定されたジョブを実行できます。たとえば、「Let's Encrypt Wildcard free」ドメイン名 SSL 証明書で説明されている acme.sh スクリプトは、Crontab のスケジュールされたタスクを使用して SSL 証明書を更新する必要があります。
crontab コマンドを使用すると、指定したシステム命令またはシェル スクリプトを一定の間隔で実行できます。Linux VPS が Google Drive と Dropbox をマウントするときに、Crontab コマンドを使用してスケジュールされた同期バックアップを実行し、Crontab を使用して VPS とサーバーを定期的に再起動できます。または、Nginx、PHP、MysqL サービスなど。
つまり、基本的な Crontab コマンド構文を習得することは、独自の VPS ホストを管理するために非常に必要です。この記事では、詳細な説明は行わずに、Linux Crontab コマンドの使用方法を主に簡単に説明します。将来。
VPS ホスティングに関連するその他のコマンドとアプリケーションについては、以下を確認してください。
- Linux システム監視コマンドの概要 - パフォーマンスのボトルネックを見つけるためのマスター CPU、メモリ、ディスク IO など
- 3 つのコマンド ツール Rsync、SCP、Tar-quick ソリューションによる VPS リモート Web サイトの再配置とデータ同期
- Linux でフォルダー ディレクトリを共有する 3 つの方法 - NFS リモート マウント、GlusterFS 共有ストレージ、Samba 共有ディレクトリ
1. Crontab の表示と編集の再起動
1. crontab のスケジュールされた実行タスクのリストを表示します。
crontab -l
2. crontabを編集してタスクを定期的に実行する
crontab -e
3. crontabのスケジュールされたタスクを削除します
crontab -r
4. 関連コマンド:
sudo service crond start #启动服务
sudo service crond stop #关闭服务
sudo service crond restart #重启服务
sudo service crond reload #重新载入配置
sudo service crond status #查看服务状态
2. Crontabの基本フォーマット構文
crontabの時間表現:
基本格式 :
* * * * * command
分 时 日 月 周 命令
まずは例を見てみましょう。毎日午前 1 時にバックアップ プログラムを実行します: 0 1 * * * /root/wzfou.com/backup.sh
。このうち、/root/wzfou.com/backup.sh
はスクリプト パスです。絶対パスを使用する場合は、以前の日付形式については次の図を参照してください。
インスタンス 1: は 1 分ごとに実行されます
* * * * * /root/wzfou.com/backup.sh
インスタンス 2: 1 時間ごとに 3 分目と 15 分目に実行します。
3,15 * * * * /root/wzfou.com/backup.sh
例 3: 毎日 1 回、8:00 から 11:00 までの 3 分目と 15 分目に実行します。
3,15 8-11 * * * /root/wzfou.com/backup.sh
インスタンス 4: 2 日ごとに午前 8 時から午前 11 時までの 3 分目と 15 分目に実行されます。
3,15 8-11 */2 * * /root/wzfou.com/backup.sh
インスタンス 5: 毎週月曜日の午前 8 時から午前 11 時までの 3 分目と 15 分目に実行されます。
3,15 8-11 * * 1 /root/wzfou.com/backup.sh
例 6:毎晩 21:30 に 1 回実行します
30 21 * * * /root/wzfou.com/backup.sh
インスタンス 7: 毎月 1 回、1 日、10 日、22 日の 4:45 に実行します。
45 4 1,10,22 * * /root/wzfou.com/backup.sh
例 8:毎週土曜日と日曜日の 1:10 に 1 回実行します。
10 1 * * 6,0 /root/wzfou.com/backup.sh
インスタンス 9: 毎日 18:00 から 23:00 まで 30 分ごとに実行されます
0,30 18-23 * * * /root/wzfou.com/backup.sh
インスタンス 10: 毎週土曜日の午後 23 時に 1 回実行します
0 23 * * 6 /root/wzfou.com/backup.sh
例 11:1 時間ごとに実行
* */1 * * * /root/wzfou.com/backup.sh
例 12:毎晩 23:00 から翌日 7:00 までの間、1 時間ごとに実行されます
* 23-7/1 * * * /root/wzfou.com/backup.sh
例 13: は、毎週の最初の日に実行されます (つまり、毎週日曜日の夜 24:00 に開始されます)。
@weekly /root/wzfou.com/backup.sh
例 14:毎月 15 日に 1 回実行します。
0 11 15 * * /root/wzfou.com/backup.sh
インスタンス 15: は毎月 1 日に 1 回実行されます (つまり、毎月 1 日の午前 0 時に開始されます)。
@monthly /root/wzfou.com/backup.sh
インスタンス 16: は、指定された月に 1 回実行されます (1 月、4 月、6 月は毎晩 0:00 に 1 回実行されます)。
0 0 * jan,apr,jun * /root/wzfou.com/backup.sh
インスタンス 17: 再起動後に 1 回実行します。
@reboot /root/wzfou.com/backup.sh
例 18:スケジュールされたタスクの実行後に電子メール通知を送信します。
MAILTO="raj" 1 1 * * * /root/wzfou.com/backup.sh
例 19: シェルを指定します (デフォルトは /bin/bash)
SHELL=/bin/sh 1 1 * * * /root/wzfou.com/backup.sh
インスタンス 20: は環境変数を指定します。
PATH=/sbin:/bin:/usr/sbin:/usr/bin 1 1 * * * /root/wzfou.com/backup.sh
4. Crontab で考えられる問題
4.1 Crontab はすぐには有効になりません
新しく作成した Crontab のスケジュールされたタスクは、保存後、実行されるまで 2 分間待つ必要があります。もちろん、すぐに実行したい場合は、Crontab を再起動します。 crontab が失敗した場合は、/etc/init.d/crond restart を試して問題を解決するか、ログをチェックして特定のタスクが実行されているかどうか、エラーが報告されているかどうかを確認することができます。 tail -f /var/log/cron。
4.2 Crontab が実行されない
スクリプトにファイルパスが含まれる場合は、システム時刻とタイムゾーンを更新した後、cron を再起動する必要があります。スクリプトの手動実行は問題ないが、crontab が実行されない場合は、環境変数が原因である可能性が高く、問題を解決するために、次のように環境変数を crontab に直接導入してみることができます。
0 * * * * . /etc/profile;/bin/sh /root/wzfou.com/backup.sh
4.3 Crontab には実行権限がありません
システム レベルのタスク スケジューリングとユーザー レベルのタスク スケジューリングに注意してください。 root ユーザーと crontab ファイルの所有者のみが -e、-l、-r、および を実行できます。 v< 指定したユーザーの crontab ファイルを編集、リスト、削除、または検証するには、ept4> フラグの後に UserName を使用します。
root ユーザーのタスクのスケジュール操作は、「crontab -uroot -e」を使用して設定できます。または、スケジュールされたタスクを /etc/crontab ファイルに直接書き込むこともできます。
別のユーザーの crontab を編集するには、root として次のコマンドを実行します (コマンドの最後に「-u username」を追加) を使用して crontab を一覧表示または削除することもできます。
crontab -u username -e
4.4 Crontab 実行後の通知
Crontab のスケジュールされたタスクが指定した時間に実行されると、システムはプログラムの実行内容を示すレターを送信します。これはログ /var/log/cron で確認できます。このような通知を受け取りたくない場合は、各行のスペースの後に > /dev/null 2>&1
を追加してください。