亚洲最大看欧美片,亚洲图揄拍自拍另类图片,欧美精品v国产精品v呦,日本在线精品视频免费

  • 站長(zhǎng)資訊網(wǎng)
    最全最豐富的資訊網(wǎng)站

    Linux shell編程之控制腳本之定時(shí)運(yùn)行

    目錄

    控制腳本之定時(shí)運(yùn)行

    ①cron時(shí)間表(系統(tǒng)不關(guān)機(jī)情況下)

    ②與cron相關(guān)的文件和目錄

    ③anacron

    ④crontab定時(shí)任務(wù)

    定時(shí)任務(wù)實(shí)戰(zhàn)

    ①cron時(shí)間表(系統(tǒng)不關(guān)機(jī)情況下)

    >>>Linux使用cron程序(通過(guò)檢查cron時(shí)間表)來(lái)計(jì)劃要定期執(zhí)行的腳本

    >>>每個(gè)用戶(包括root)都有自身的cron時(shí)間表,Linux提供了crontab命令來(lái)處理時(shí)間表

    >>>默認(rèn)不存在,使用crontab命令來(lái)創(chuàng)建計(jì)劃任務(wù),將任務(wù)寫入文件,寫入時(shí)會(huì)檢查語(yǔ)法格式是否正確

    >>>當(dāng)系統(tǒng)進(jìn)行系統(tǒng)初始化時(shí),cron從/etc/init.d中啟動(dòng)

    >>>cron進(jìn)程會(huì)去搜索/var/spool/cron目錄下的crontab文件,并將其加載到內(nèi)存中

    [root@localhost ~]# ll /var/spool/cron

    total 8

    -rw——-. 1 bei bei 27 Sep 26 01:50 bei

    -r——–. 1 root root 40 Aug 6 04:48 root

    >>>cron進(jìn)程還會(huì)去搜索/etc/anacrontab(天周月相關(guān)文件)和/etc/cron.d目錄下的文件(小時(shí)相關(guān)文件)

    >>>定時(shí)任務(wù)運(yùn)行時(shí)與命令行的環(huán)境變量不一樣

    cron有兩種方式可以檢查cron tables的變化

    >>>檢查對(duì)應(yīng)的定時(shí)任務(wù)文件的modtime

    >>>使用inotify:?jiǎn)?dòng)守護(hù)進(jìn)程后,inotify會(huì)被記錄到/var/log/cron這個(gè)日志文件中

    cron時(shí)間表格式(時(shí)間戳 user-name command to be executed)

    時(shí)間戳每個(gè)字段如下(建議都用數(shù)字表示)

    field時(shí)間戳

    minute

    hour

    day of month

    month

    day of week

    allowed values

    0-59

    0-23

    1-31

    1-12 or jan、feb、mar…

    0-6 or sun、mon、tue …

    # 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

    # | | | | |

    # * * * * * user-name command to be executed

    說(shuō)明

    >>>每個(gè)字段可能包含星號(hào) * ,表示"first-last"

    >>>每個(gè)字段允許用數(shù)字范圍表示的,范圍是指用連字符“-”分隔的兩個(gè)數(shù)字,注意是閉區(qū)間

    例:"0-6"表示的是:0,1,2,3,4,5,6

    想要表示一組數(shù)字或范圍,可以用列表,用逗號(hào)","分隔的一組數(shù)字("1,2,3,4,5"或"10-12,15-17,19-21")

    但是,使用英文前三個(gè)字母表示的時(shí)候,不能用"-"表示一個(gè)范圍

    >>>步長(zhǎng)值可與范圍結(jié)合使用"/"

    在范圍后面帶有"/",表示在范圍內(nèi)跳過(guò)的數(shù)字的值

    例:天數(shù)取“1-31/2”,表示1,3,5……,29,31,即只取每個(gè)月的單數(shù)天

    >>>使用名稱表示字段時(shí),不允許使用范圍或列表方式(只能一個(gè)名稱)

    >>>第六個(gè)字段,指定要運(yùn)行的命令,直到遇到換行符或%符號(hào)(當(dāng)需要用到%用轉(zhuǎn)義)

    >>>命令執(zhí)行的日期可以在兩個(gè)字段:day of month和day of week指定,如果兩個(gè)字段都收到限制,當(dāng)任一字段與當(dāng)前時(shí)間匹配,則認(rèn)為當(dāng)前時(shí)間應(yīng)該被執(zhí)行,

    例:"0 0 1,15 * 0"表示每個(gè)月的1號(hào),15號(hào)和每個(gè)星期日的00:00是定時(shí)時(shí)間

    ②與cron相關(guān)的文件和目錄

    >>>/etc/crontab文件:系統(tǒng)級(jí)別的定時(shí)任務(wù),只有root可以修改

    該文件默認(rèn)情況下是空的,常用于運(yùn)行每日、每周、每月的作業(yè)

    文件內(nèi)容如下:

    SHELL=/bin/bash

    PATH=/sbin:/bin:/usr/sbin:/usr/bin #系統(tǒng)級(jí)別定時(shí)任務(wù)和系統(tǒng)的環(huán)境變量是不一樣的

    MAILTO=root

    HOME=/

    # For details see man 4 crontabs

    >>>/etc/cron.d

    這個(gè)目錄的作用是每小時(shí)運(yùn)行/etc/cron.hourly的定時(shí)任務(wù)

    ③anacron

    >>>解決機(jī)器不連續(xù)工作,定時(shí)任務(wù)過(guò)期問(wèn)題,當(dāng)服務(wù)器不連續(xù)工作,重新啟動(dòng)就回去運(yùn)行之前定時(shí)任務(wù)未執(zhí)行的作業(yè)

    >>>/etc/cron.d 每小時(shí)會(huì)執(zhí)行一次anacron

    >>>anacron以天為單位,當(dāng)天的定時(shí)任務(wù)不會(huì)運(yùn)行

    >>>使用-s選項(xiàng),只有當(dāng)上一次作業(yè)結(jié)束,才會(huì)運(yùn)行下一個(gè)作業(yè)

    >>>時(shí)間戳存在/var/spool/anacron目錄

    ④crontab定時(shí)任務(wù)

    >>>crontab命令是用于創(chuàng)建、刪除或列出用于服務(wù)cron守護(hù)程序表的程序

    >>>crontab創(chuàng)建的定時(shí)任務(wù)存放在/var/spool/cron目錄下(用戶無(wú)法編輯,只能用crontab命令去編輯)

    [root@localhost ~]# ls -al /var/spool/cron

    total 16

    drwx——. 2 root root 4096 Sep 27 00:35 .

    drwxr-xr-x. 13 root root 4096 Jun 24 10:46 ..

    -rw——-. 1 bei bei 27 Sep 26 01:50 bei

    -r——–. 1 root root 40 Aug 6 04:48 root

    [root@localhost ~]#

    [root@localhost ~]# ls -al /usr/bin/crontab

    -rwsr-xr-x. 1 root root 51784 Aug 23 2016 /usr/bin/crontab

    說(shuō)明:用戶無(wú)法編輯是因?yàn)闆](méi)有對(duì)/var/spool/cron這個(gè)目錄的寫權(quán)限,

    用戶可以用crontab命令去編輯/var/spool/cron目錄下自己的文件,是因?yàn)?usr/bin/crontab有suid權(quán)限

    當(dāng)/usr/bin/crontab被啟動(dòng)為一個(gè)進(jìn)程,用戶就擁有了屬主root的權(quán)限去創(chuàng)建,修改,刪除自己的定時(shí)任務(wù)了

    >>>對(duì)于不同用戶??梢栽O(shè)置/etc/cron.allow和/etc/cron.deny,去禁止某些用戶使用定時(shí)任務(wù)

    這兩個(gè)文件只用其中一個(gè),若兩個(gè)文件不存在,則是有root可以用定時(shí)任務(wù)

    命令格式:crontab [-u user] 【-e | -l | -r】

    命令

    描述

    -u

    root指定操作哪個(gè)用戶的文件

    -e

    編輯某個(gè)用戶crontab文件內(nèi)容

    -l

    列出某個(gè)用戶crontab文件內(nèi)容

    -r

    刪除某個(gè)用戶crontab文件內(nèi)容

    -i

    交互式確認(rèn)刪除crontab文件

    定時(shí)任務(wù)實(shí)戰(zhàn)

    >>>每分鐘執(zhí)行一次 commands

    * * * * * commands

    >>>每小時(shí)的第3和第15分鐘執(zhí)行 commands

    3,15 * * * * commands

    >>>在上午的8點(diǎn)到11點(diǎn)的第3和第15分鐘執(zhí)行 commands

    3,15 8-11 * * * commands

    >>>每隔一天的上午8點(diǎn)到11點(diǎn)的第3和第15分鐘執(zhí)行 commands

    3,15 8-11 */2 * * commands

    >>>每周一上午8點(diǎn)到11點(diǎn)的第3和第15分鐘執(zhí)行 commands

    3,15 8-11 * * 1 commands

    >>>每晚的21:30重啟networking

    30 21 * * * /etc/init.d/networking restart

    >>>每月1,20,22的的4.45重啟networking

    45 4 1,20,22 * * /etc/init.d/networking restart

    >>>每周六、日的01:10重啟networking

    10 1 * * 0,6 /etc/init.d/networking restart

    >>>每天18:00至23:00之間每隔30分鐘重啟networking

    0,30 18-23 * * * /etc/init.d/networking restart

    思考題:如何在每個(gè)月的最后一天中午12:00執(zhí)行commands

    0 12 * * * if [ `date +%d -d tomorrow` -eq 1 ];then commands;fi

    說(shuō)明:這里使用if-then語(yǔ)句,用來(lái)判斷明天是不是1號(hào),若是1號(hào),則執(zhí)行commands

    贊(0)
    分享到: 更多 (0)
    網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)