ジョブ-第04週-教室-Day 17-linuxシステムタイミングタスクCron(d)サービス応用実践
10141 ワード
Day 17クラスノート
1 Linuxシステムタイミングタスク
1、定時任務とは何ですか.定期的にタスク計画を実行するソフトウェア、Linuxタイミングタスクの一般的なソフトウェアcrond
.
2、定時タスクソフトウェアを使用して、毎日、あなたのニーズに応じて1時間ごとに仕事を繰り返すことができます.例えば、バックアップはすべて0時以降で、2時に起き上がってバックアップし、4時以降に寝ます.自動バックアップを実現するプログラムを書いて、タイミングタスクソフトウェアに実行させる必要があります.
3、どう使いますか.
(1)システムタイミングタスク計画
[root@oldboy ~]# ll /var/log/messages*
-rw-------. 1 root root 96594 Mar 21 12:40 /var/log/messages
-rw-------. 1 root root 485249 Mar 20 10:46 /var/log/messages-20190320
[root@oldboy ~]# ll /var/log/secure*
-rw-------. 1 root root 1430 Mar 21 12:50 /var/log/secure
-rw-------. 1 root root 2695 Mar 20 10:46 /var/log/secure-20190320
[root@oldboyedu /etc/cron.daily]# ll /etc/cron.daily/logrotate /etc/logrotate.conf
-rwx------. 1 root root 219 Oct 31 2018 /etc/cron.daily/logrotate
-rw-r--r--. 1 root root 662 Jul 31 2013 /etc/logrotate.conf
日単位でログをカットすると、
logrotate
が使用できます.(2)ユーザタイミングタスク計画Linuxシステムにおいて、
cron
はタイミングタスクのソフトウェア名、crond
はサービスプロセス名であり、本当にタイミングタスクサービスを実現する.crontab
コマンドは、タイミングタスクルールを設定するための構成コマンドです.タイミングタスクを構成するには、まず
crond
サービスを開始します.systemctl start crond.service
systemctl stop crond.service
systemctl status crond.service
自己起動と非起動を有効にするには、次の手順に従います.
systemctl enable crond.service
systemctl disable crond.service
[root@oldboyedu ~]# systemctl status crond
● crond.service - Command Scheduler
Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2020-10-08 01:56:12 CST; 2min 26s ago
Main PID: 13189 (crond)
CGroup: /system.slice/crond.service
└─13189 /usr/sbin/crond -n
Oct 08 01:56:12 oldboyedu crond[13189]: (CRON) INFO (RANDOM_DELAY will be...)
Oct 08 01:56:12 oldboyedu systemd[1]: Started Command Scheduler.
Oct 08 01:56:12 oldboyedu crond[13189]: (CRON) INFO (running with inotify...)
Oct 08 01:56:12 oldboyedu crond[13189]: (CRON) INFO (@reboot jobs will be...)
Hint: Some lines were ellipsized, use -l to show in full.
crontab
コマンドは、タイミングタスクルールを設定するための構成コマンドです.内容はどこに保管しましたか.タイミングタスクコンテンツ格納場所/var/spool/cron/
現在のユーザ名をファイル名とする[root@oldboyedu ~]# ll /var/spool/cron/
total 8
-rw------- 1 oldboy oldboy 10 Oct 8 02:04 oldboy
-rw------- 1 root root 6 Oct 8 02:02 root
[root@oldboyedu ~]# cat /var/spool/cron/oldboy
###oldboy
crontab
パラメータ:例
root
:crontab -l == cat /var/spool/cron/root
crontab -e == vim /var/spool/cron/root
タイミングタスクの構文を記述するには、次の手順に従います.
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * (command to be executed)
:
: minute (0 - 59)
: hour (0 - 23)
: day of month (1 - 31)
: month (1 - 12) OR jan,feb,mar,apr ...
: day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
:
特殊記号:
*
00 23 * * * cmd
- 1-10
00 8-23 * * * cmd
, 1,2,3,4,8
00 1,2,3,4,8 * * * cmd
/n n 。
n , “ n ”, : 10
*/10 * * * * cmd
*/1 * * * * /bin/sh /scripts/data.sh
30 3,12 * * * /bin/sh /scripts/oldboy.sh
30 */6 * * * /bin/sh /scripts/oldboy.sh
30 8-18/2 * * * /bin/sh /scripts/oldboy.sh
30 21 * * *
45 4 1,10,22 * * /application/apache/bin/apachectl graceful
10 1 * * 6,0 /application/apache/bin/apachectl graceful
0,30 18-23 * * * /application/apache/bin/apachectl graceful
00 */1 * * * /application/apache/bin/apachectl graceful
2コマンドインスタンス
コマンドインスタンス1:
*/1 * * * * /bin/sh /scripts/data.sh
この例では、数字とコマンドスクリプトのほかに、記号「」、記号の意味「各」を使用します.1列目は分を意味し、特殊記号「/」は間隔を意味し、すなわち1分おきに
/bin/sh /scripts/data.sh
プログラムが実行されることを意味する.コマンドインスタンス2:
30 3,12 * * * /bin/sh /scripts/oldboy.sh
この例では、第1列は30であり、30分を表す.2番目の列は3,12で、これは3時および12時を表し、このタイミングタスクは、毎日午前3時および昼12時の半時(または、毎日午前3:30および昼12:30と記述される)に
/scripts/oldboy.sh
スクリプトを実行することを意味する.コマンドインスタンス3:
30 */6 * * * /bin/sh /scripts/oldboy.sh
この例では、第1列は30であり、30分を表す.第2列*/6は6時間ごとを表し、6、12、18、24の役割にも相当する.このタイミングタスクは、6時間半ごとに
/scripts/oldboy.sh
スクリプトタスクを実行することを意味します.コマンドインスタンス4:
30 8-18/2 * * * /bin/sh /scripts/oldboy.sh
この例では、最初の列は30であり、30分を表す.第2列の8-18/2は、朝8時から午後18時までの間に2時間おきに表示され、8、10、12、14、16、18を単独でリストすることにも相当する.では、このタイミングタスクとは、朝8時から午後18時までの間、2時間半おきに
/scripts/oldboy.sh
スクリプトタスクを実行することを意味します.コマンドインスタンス5:
30 21 * * * /application/apache/bin/apachectl graceful
この例は、毎晩の21:30に
apache
を再開することを示す.コマンド例6:
45 4 1,10,22 * * /application/apache/bin/apachectl graceful
この例は、毎月1、10、22日の午前4:45に
apache
を再開することを示す.コマンドインスタンス7:
10 1 * * 6,0 /application/apache/bin/apachectl graceful
この例では、毎週6、日曜日の午前1:10に
apache
を再開します.コマンドインスタンス8:
0,30 18-23 * * * /application/apache/bin/apachectl graceful
この例は、毎日18:00から23:00の間で30分おきに
apache
を再起動することを示す.コマンドインスタンス9:
00 */1 * * * /application/apache/bin/apachectl graceful
この例では、
apache
を1時間おきにフルタイムで再起動することを示すコマンドインスタンス10:
* 23,00-07/1 * * * /application/apache/bin/apachectl graceful
この例は、夜23時と朝0-7時の間に1時間おきに
apache
が再起動されることを示していない.説明するのは、以上の結果が規範的ではなく、間違っていることです.なぜか考えてみましょうか?以上のタイミングタスクの第1列は*で、1分ごとにタスクが実行されることを示しています.つまり、夜23時と朝0-7時の間に1時間ごとに
apache
が再起動されるのは恐ろしいでしょう.コマンドインスタンス11:
00 11 * 4 1-3 /application/apache/bin/apachectl graceful
この例では、4月の週1~水曜日の午前11時ちょうどに
apache
を再開することを示します.コマンドインスタンス12:
30 09 * * 0
この例では、毎週の午前9時30分に老男の子の教育授業に行くことを示しています.これは週末のクラスの授業頻度です.
コマンドインスタンス13:
30 08 * * *
本例は午前8:30ごとに老男の子の教育授業に行くことを示しており,これは脱産クラスの授業頻度である.
3実践:
例1:1分ごとに
oldboy
文字列を/tmp/oldboy.log
に追加する.象は冷蔵庫を3段階に分けてa.コマンドラインを実行しました.
[root@oldboyedu ~]# echo "oldboy">>/tmp/oldboy.log
[root@oldboyedu ~]# cat /tmp/oldboy.log
oldboy
[root@oldboyedu ~]# echo "oldboy">>/tmp/oldboy.log
[root@oldboyedu ~]# cat /tmp/oldboy.log
oldboy
oldboy
b.構成タイミングタスク
crontab -e
構成の編集 [root@oldboyedu ~]# crontab -l
#####
* * * * * echo "oldboy">>/tmp/oldboy.log
c.検査
[root@oldboyedu ~]# tail -f /tmp/oldboy.log
oldboy
oldboy
oldboy
老男孩思想:1)先入力****2)先命令行操作成功.3)コマンドをタイミングタスク編集にコピーする.
例2:サーバ時間を5分ごとにインターネット時間と同期させる.
タイムサービスソフトウェアのインストール:
yum install ntpdate -y
インターネットの更新時間:
/usr/sbin/ntpdate ntp1.aliyun.com
/dev/null
&>/dev/null >/dev/null 2>&1
[root@oldboyedu ~]# crontab -l
*/5 * * * * /usr/sbin/ntpdate ntp1.aliyun.com &>/dev/null
例3:毎晩0時、サイトディレクトリ
/var/www/html
の下の内容を/data
の下にパッケージしてバックアップし、毎回異なるバックアップパッケージ名を生成することを要求する.少なくとも3つのステップに分けます.
[root@oldboyedu ~]# mkdir /var/www/html /data -p
具体的なコマンド:
[root@oldboyedu ~]# tar zcvf /data/html_$(date +%F).tar.gz /var/www/html/
tar: Removing leading `/' from member names
/var/www/html/
[root@oldboyedu ~]# ll /data
total 4
-rw-r--r-- 1 root root 117 Mar 22 11:59 html_2019-03-22.tar.gz
[root@oldboyedu ~]# crontab -l
00 00 * * * tar zcvf /data/html_$(date +%F).tar.gz /var/www/html/
間違っています.実行しません...新聞を読み間違えた...エラーログタイミングタスクが実行されていません.エラーログはどこですか?エラーログ
/var/log/cron
Mar 22 12:03:01 oldboyedu CROND[18770]: (root) CMD (tar zcvf /data/html_$(date +)
定時任務は
%
の要求に対して、パーセンテージは\%
に転換しなければならない.正解:
[root@oldboyedu ~]# crontab -l
00 00 * * * tar zcvf /data/html_$(date +\%F).tar.gz /var/www/html/
優秀な答え(企業):
cd /var/www
tar zcf /data/html_$(date +%F).tar.gz ./html
mkdir /server/scripts -p #
メンテナンス仕様:スクリプトの場所:
/server/scripts
ソフトウェアの場所:/server/tools
コンパイルの場所:/application/
ソフトウェアの名前-バージョン、そしてソフトリンク.cd /server/scripts
#cat bak.sh
cd /var/www
tar zcf /data/html_$(date +%F).tar.gz ./html
コマンドラインの実行:
/bin/sh /server/scripts/bak.sh
#bak html dir by oldboy at 2020108
00 00 * * * /bin/sh /server/scripts/bak.sh &>/dev/null
[root@oldboyedu /server/scripts]# crontab -l|tail -2
#bak html dir by oldboy at 2020108
00 00 * * * /bin/sh /server/scripts/bak.sh &>/dev/null
[root@oldboyedu /server/scripts]# ls -l /data
4生産環境におけるタイミングCron表記要領
要領01:タイミングタスクルールに必要な注釈要領02:すべてのタイミングタスクをできるだけスクリプト形式で実行する要領03:実行する
Shell
スクリプトの前に/bin/sh
要領04:タイミングタスク中コマンドまたはスクリプトの末尾に>/dev/null 2>&1
要領05:指定したユーザの下で実行するタイミングタスク要領06:生産タスク計画プログラムで出力情報を勝手に印刷しないで出力する考えがある.要領07:タイミングタスク実行のスクリプトを仕様パスに格納する要領08:タイミングタスクを設定するには操作手順を規範化し、エラーを減らす要領09:タイミングタスクスクリプトでプログラムコマンドとパスをできるだけフルパスで要領10:時間変数%号を逆斜線で変換(タイミングタスクでコマンドが必要な場合のみ)要領11:スクリプトでシステム環境変数を呼び出した場合、要領12を再定義する:エラーまたは実行できない、/var/log/cron
ログを確認します