ジョブ-第04週-教室-Day 17-linuxシステムタイミングタスクCron(d)サービス応用実践

10141 ワード

Day 17クラスノート


1 Linuxシステムタイミングタスク


1、定時任務とは何ですか.定期的にタスク計画を実行するソフトウェア、Linuxタイミングタスクの一般的なソフトウェアcrond.
2、定時タスクソフトウェアを使用して、毎日、あなたのニーズに応じて1時間ごとに仕事を繰り返すことができます.例えば、バックアップはすべて0時以降で、2時に起き上がってバックアップし、4時以降に寝ます.自動バックアップを実現するプログラムを書いて、タイミングタスクソフトウェアに実行させる必要があります.
3、どう使いますか.
(1)システムタイミングタスク計画
  • 1.管理者の介入を必要とせず、システムは自動的に実行されます.
  • 2.システムタスクを使用して管理者にサービスすることもできます.
  • [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パラメータ:
  • -lリスト設定されたタイミングタスクを表示*
  • -e edit編集タイミングタスク*
  • -u user特定のユーザのダウンタイムタスク
  • を表示する
    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ログを確認します