日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > linux >内容正文

linux

鸟哥的Linux私房菜(基础篇)- 第十六章、例行性工作排程 (crontab)

發(fā)布時(shí)間:2025/3/21 linux 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 鸟哥的Linux私房菜(基础篇)- 第十六章、例行性工作排程 (crontab) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
第十六章、例行性工作排程 (crontab)
最近升級(jí)日期:2009/09/11
學(xué)習(xí)了基礎(chǔ)篇也一陣子了,你會(huì)發(fā)現(xiàn)到為什么系統(tǒng)常常會(huì)主動(dòng)的進(jìn)行一些任務(wù)?這些任務(wù)到底是誰在配置工作的?如果你想要讓自己設(shè)計(jì)的備份程序可以自動(dòng)的在系統(tǒng)底下運(yùn)行,而不需要手動(dòng)來啟動(dòng)他,又該如何處置?這些例行的工作可能又分為『?jiǎn)我弧还ぷ髋c『循環(huán)』工作,在系統(tǒng)內(nèi)又是哪些服務(wù)在負(fù)責(zé)?還有還有,如果你想要每年在老婆的生日前一天就發(fā)出一封信件提醒自己不要忘記,可以辦的到嗎?嘿嘿!這些種種要如何處理,就看看這一章先!

1. 什么是例行性工作排程
  1.1 Linux 工作排程的種類: at, crontab
  1.2 Linux 上常見的例行性工作
2. 僅運(yùn)行一次的工作排程
  2.1 atd 的啟動(dòng)與 at 運(yùn)行的方式: /etc/at.deny
  2.2 實(shí)際運(yùn)行單一工作排程: at,atq & atrm, batch
3. 循環(huán)運(yùn)行的例行性工作排程
  3.1 使用者的配置: /etc/cron.deny, crontab
  3.2 系統(tǒng)的配置檔: /etc/crontab
  3.3 一些注意事項(xiàng)
4. 可喚醒停機(jī)期間的工作任務(wù)
  4.1 什么是 anacron
  4.2 anacron 與 /etc/anacrontab
5. 重點(diǎn)回顧
6. 本章習(xí)題
7. 針對(duì)本文的建議:http://phorum.vbird.org/viewtopic.php?t=23889

什么是例行性工作排程

每個(gè)人或多或少都有一些約會(huì)或者是工作,有的工作是例行性的,例如每年一次的加薪、每個(gè)月一次的工作報(bào)告、每周一次的午餐會(huì)報(bào)、每天需要的打卡等等;有的工作則是臨時(shí)發(fā)生的,例如剛好總公司有高官來訪,需要你準(zhǔn)備演講器材等等!用在生活上面,例如每年的愛人的生日、每天的起床時(shí)間等等、還有突發(fā)性的計(jì)算機(jī)大降價(jià) (啊!真希望天天都有!) 等等羅。

像上面這些例行性工作,通常你得要記錄在行事歷上面才能避免忘記!不過,由於我們常常在計(jì)算機(jī)前面的緣故,如果計(jì)算機(jī)系統(tǒng)能夠主動(dòng)的通知我們的話,那么不就輕松多了!嘿嘿!這個(gè)時(shí)候 Linux 的例行性工作排程就可以派上場(chǎng)了!在不考慮硬件與我們服務(wù)器的連結(jié)狀態(tài)下,我們的 Linux 可以幫你提醒很多任務(wù),例如:每一天早上 8:00 鐘要服務(wù)器連接上音響,并啟動(dòng)音樂來喚你起床;而中午12:00 希望 Linux 可以發(fā)一封信到你的郵件信箱,提醒你可以去吃午餐了;另外,在每年的你愛人生日的前一天,先發(fā)封信提醒你,以免忘記這么重要的一天。

那么 Linux 的例行性工作是如何進(jìn)行排程的呢?所謂的排程就是將這些工作安排運(yùn)行的流程之意!咱們的 Linux 排程就是透過 crontab 與 at 這兩個(gè)東西!這兩個(gè)玩意兒有啥異同?就讓我們來瞧瞧先!


Linux 工作排程的種類: at, cron

從上面的說明當(dāng)中,我們可以很清楚的發(fā)現(xiàn)兩種工作排程的方式:

  • 一種是例行性的,就是每隔一定的周期要來辦的事項(xiàng);
  • 一種是突發(fā)性的,就是這次做完以后就沒有的那一種 (計(jì)算機(jī)大降價(jià)...)

那么在 Linux 底下如何達(dá)到這兩個(gè)功能呢?那就得使用 at 與 crontab 這兩個(gè)好東西羅!

  • at :at 是個(gè)可以處理僅運(yùn)行一次就結(jié)束排程的命令,不過要運(yùn)行 at 時(shí),必須要有 atd 這個(gè)服務(wù) (第十八章) 的支持才行。在某些新版的 distributions 中,atd 可能默認(rèn)并沒有啟動(dòng),那么 at 這個(gè)命令就會(huì)失效呢!不過我們的 CentOS 默認(rèn)是啟動(dòng)的!

  • crontab :crontab 這個(gè)命令所配置的工作將會(huì)循環(huán)的一直進(jìn)行下去!可循環(huán)的時(shí)間為分鐘、小時(shí)、每周、每月或每年等。crontab 除了可以使用命令運(yùn)行外,亦可編輯 /etc/crontab 來支持。至於讓 crontab 可以生效的服務(wù)則是 crond 這個(gè)服務(wù)喔!

底下我們先來談一談 Linux 的系統(tǒng)到底在做什么事情,怎么有若干多的工作排程在進(jìn)行呢?然后再回來談一談at 與 crontab 這兩個(gè)好東西!


Linux 上常見的例行性工作

如果你曾經(jīng)使用過 Linux 一陣子了,那么你大概會(huì)發(fā)現(xiàn)到 Linux 會(huì)主動(dòng)的幫我們進(jìn)行一些工作呢!比方說自動(dòng)的進(jìn)行線上升級(jí) (on-line update)、自動(dòng)的進(jìn)行 updatedb (第七章談到的 locate 命令) 升級(jí)檔名數(shù)據(jù)庫、自動(dòng)的作登錄檔分析(所以 root 常常會(huì)收到標(biāo)題為 logwatch 的信件) 等等。這是由於系統(tǒng)要正常運(yùn)行的話,某些在背景底下的工作必須要定時(shí)進(jìn)行的緣故。基本上 Linux 系統(tǒng)常見的例行性任務(wù)有:

  • 進(jìn)行登錄檔的輪替 (log rotate)
    Linux 會(huì)主動(dòng)的將系統(tǒng)所發(fā)生的各種資訊都記錄下來,這就是登錄檔 (第十九章)。由於系統(tǒng)會(huì)一直記錄登錄資訊,所以登錄檔將會(huì)越來越大!我們知道大型文件不但占容量還會(huì)造成讀寫效能的困擾,因此適時(shí)的將登錄檔數(shù)據(jù)挪一挪,讓舊的數(shù)據(jù)與新的數(shù)據(jù)分別存放,則比較可以有效的記錄登錄資訊。這就是 log rotate 的任務(wù)!這也是系統(tǒng)必要的例行任務(wù);

  • 登錄檔分析 logwatch 的任務(wù)
    如果系統(tǒng)發(fā)生了軟件問題、硬件錯(cuò)誤、資安問題等,絕大部分的錯(cuò)誤資訊都會(huì)被記錄到登錄檔中,因此系統(tǒng)管理員的重要任務(wù)之一就是分析登錄檔。但你不可能手動(dòng)透過 vim 等軟件去檢視登錄檔,因?yàn)閿?shù)據(jù)太復(fù)雜了!我們的 CentOS 提供了一只程序『 logwatch 』來主動(dòng)分析登錄資訊,所以你會(huì)發(fā)現(xiàn),你的 root 老是會(huì)收到標(biāo)題為 logwatch的信件,那是正常的!你最好也能夠看看該信件的內(nèi)容喔!

  • 創(chuàng)建 locate 的數(shù)據(jù)庫
    在第七章我們談到的 locate 命令時(shí),我們知道該命令是透過已經(jīng)存在的檔名數(shù)據(jù)庫來進(jìn)行系統(tǒng)上檔名的查詢。我們的檔名數(shù)據(jù)庫是放置到 /var/lib/mlocate/ 中。問題是,這個(gè)數(shù)據(jù)庫怎么會(huì)自動(dòng)升級(jí)啊?嘿嘿!這就是系統(tǒng)的例行性工作所產(chǎn)生的效果啦!系統(tǒng)會(huì)主動(dòng)的進(jìn)行updatedb 喔!

  • whatis 數(shù)據(jù)庫的創(chuàng)建
    與 locate 數(shù)據(jù)庫類似的,whatis 也是個(gè)數(shù)據(jù)庫,這個(gè) whatis 是與man page 有關(guān)的一個(gè)查詢命令,不過要使用 whatis 命令時(shí),必須要擁有 whatis 數(shù)據(jù)庫,而這個(gè)數(shù)據(jù)庫也是透過系統(tǒng)的例行性工作排程來自動(dòng)運(yùn)行的哩!

  • RPM 軟件登錄檔的創(chuàng)建
    RPM (第二十三章) 是一種軟件管理的機(jī)制。由於系統(tǒng)可能會(huì)常常變更軟件,包括軟件的新安裝、非經(jīng)常性升級(jí)等,都會(huì)造成軟件檔名的差異。為了方便未來追蹤,系統(tǒng)也幫我們將檔名作個(gè)排序的記錄呢!有時(shí)候系統(tǒng)也會(huì)透過排程來幫忙 RPM 數(shù)據(jù)庫的重新建置喔!

  • 移除緩存檔
    某些軟件在運(yùn)行中會(huì)產(chǎn)生一些緩存檔,但是當(dāng)這個(gè)軟件關(guān)閉時(shí),這些緩存檔可能并不會(huì)主動(dòng)的被移除。有些緩存檔則有時(shí)間性,如果超過一段時(shí)間后,這個(gè)緩存檔就沒有效用了,此時(shí)移除這些緩存檔就是一件重要的工作!否則磁碟容量會(huì)被耗光。系統(tǒng)透過例行性工作排程運(yùn)行名為 tmpwatch 的命令來刪除這些緩存檔呢!

  • 與網(wǎng)絡(luò)服務(wù)有關(guān)的分析行為
    如果你有安裝類似 WWW 服務(wù)器軟件 (一個(gè)名為 apache 的軟件),那么你的 Linux 系統(tǒng)通常就會(huì)主動(dòng)的分析該軟件的登錄檔。同時(shí)某些憑證與認(rèn)證的網(wǎng)絡(luò)資訊是否過期的問題,我們的 Linux 系統(tǒng)也會(huì)很親和的幫你進(jìn)行自動(dòng)檢查!

其實(shí)你的系統(tǒng)會(huì)進(jìn)行的例行性工作與你安裝的軟件多寡有關(guān),如果你安裝過多的軟件,某些服務(wù)功能的軟件都會(huì)附上分析工具,那么你的系統(tǒng)就會(huì)多出一些例行性工作羅!像鳥哥的主機(jī)還多加了很多自己撰寫的分析工具,以及其他第三方協(xié)力軟件的分析軟件,嘿嘿!俺的 Linux 工作量可是非常大的哩!因?yàn)橛羞@么多的工作需要進(jìn)行,所以我們當(dāng)然得要了解例行性工作的處理方式羅!


僅運(yùn)行一次的工作排程

首先,我們先來談?wù)剢我还ぷ髋懦痰倪\(yùn)行,那就是 at 這個(gè)命令的運(yùn)行!


atd 的啟動(dòng)與 at 運(yùn)行的方式

要使用單一工作排程時(shí),我們的 Linux 系統(tǒng)上面必須要有負(fù)責(zé)這個(gè)排程的服務(wù),那就是 atd 這個(gè)玩意兒。不過并非所有的 Linux distributions 都默認(rèn)會(huì)把他打開的,所以呢,某些時(shí)刻我們必須要手動(dòng)將他激活才行。激活的方法很簡(jiǎn)單,就是這樣:

[root@www ~]# /etc/init.d/atd restart 正在停止 atd: [ 確定 ] 正在啟動(dòng) atd: [ 確定 ]# 再配置一下啟動(dòng)時(shí)就啟動(dòng)這個(gè)服務(wù),免得每次重新啟動(dòng)都得再來一次! [root@www ~]# chkconfig atd on

重點(diǎn)是那個(gè)『正在啟動(dòng)(或 starting)』項(xiàng)目的 OK 啦!那表示啟動(dòng)是正常的!這部份我們?cè)诘谑苏聲?huì)談及。如果您真的有興趣,那么可以自行到 /etc/init.d/atd 這個(gè) shell script 內(nèi)去瞧一瞧先! ^_^。至於那個(gè) chkconfig ,你也可以使用 man 先查閱一下啊!我們第十八章再介紹啦!


  • at 的運(yùn)行方式

既然是工作排程,那么應(yīng)該會(huì)有產(chǎn)生工作的方式,并且將這些工作排進(jìn)行程表中羅!OK!那么產(chǎn)生工作的方式是怎么進(jìn)行的?事實(shí)上,我們使用 at 這個(gè)命令來產(chǎn)生所要運(yùn)行的工作,并將這個(gè)工作以文字檔的方式寫入/var/spool/at/ 目錄內(nèi),該工作便能等待 atd 這個(gè)服務(wù)的取用與運(yùn)行了。就這么簡(jiǎn)單。

不過,并不是所有的人都可以進(jìn)行 at 工作排程喔!為什么?因?yàn)榘踩睦碛砂?#xff5e;很多主機(jī)被所謂的『綁架』后,最常發(fā)現(xiàn)的就是他們的系統(tǒng)當(dāng)中多了很多的怪客程序 (cracker program),這些程序非常可能運(yùn)用工作排程來運(yùn)行或搜集系統(tǒng)資訊,并定時(shí)的回報(bào)給怪客團(tuán)體!所以羅,除非是你認(rèn)可的帳號(hào),否則先不要讓他們使用 at 吧!那怎么達(dá)到使用 at 的列管呢?

我們可以利用 /etc/at.allow 與 /etc/at.deny 這兩個(gè)文件來進(jìn)行 at 的使用限制呢!加上這兩個(gè)文件后, at 的工作情況其實(shí)是這樣的:

  • 先找尋 /etc/at.allow 這個(gè)文件,寫在這個(gè)文件中的使用者才能使用 at,沒有在這個(gè)文件中的使用者則不能使用 at (即使沒有寫在 at.deny 當(dāng)中);

  • 如果 /etc/at.allow 不存在,就尋找 /etc/at.deny 這個(gè)文件,若寫在這個(gè)at.deny 的使用者則不能使用 at ,而沒有在這個(gè) at.deny 文件中的使用者,就可以使用at 咯;

  • 如果兩個(gè)文件都不存在,那么只有 root 可以使用 at 這個(gè)命令。
  • 透過這個(gè)說明,我們知道 /etc/at.allow 是管理較為嚴(yán)格的方式,而 /etc/at.deny 則較為松散 (因?yàn)閹ぬ?hào)沒有在該文件中,就能夠運(yùn)行 at 了)。在一般的 distributions 當(dāng)中,由於假設(shè)系統(tǒng)上的所有用戶都是可信任的,因此系統(tǒng)通常會(huì)保留一個(gè)空的 /etc/at.deny 文件,意思是允許所有人使用 at 命令的意思 (您可以自行檢查一下該文件)。不過,萬一你不希望有某些使用者使用 at 的話,將那個(gè)使用者的帳號(hào)寫入 /etc/at.deny 即可!一個(gè)帳號(hào)寫一行。


    實(shí)際運(yùn)行單一工作排程

    單一工作排程的進(jìn)行就使用 at 這個(gè)命令羅!這個(gè)命令的運(yùn)行非常簡(jiǎn)單!將 at 加上一個(gè)時(shí)間即可!基本的語法如下:

    [root@www ~]# at [-mldv] TIME [root@www ~]# at -c 工作號(hào)碼 選項(xiàng)與參數(shù): -m :當(dāng) at 的工作完成后,即使沒有輸出信息,亦以 email 通知使用者該工作已完成。 -l :at -l 相當(dāng)於 atq,列出目前系統(tǒng)上面的所有該使用者的 at 排程; -d :at -d 相當(dāng)於 atrm ,可以取消一個(gè)在 at 排程中的工作; -v :可以使用較明顯的時(shí)間格式列出 at 排程中的工作列表; -c :可以列出后面接的該項(xiàng)工作的實(shí)際命令內(nèi)容。TIME:時(shí)間格式,這里可以定義出『什么時(shí)候要進(jìn)行 at 這項(xiàng)工作』的時(shí)間,格式有:HH:MM ex> 04:00在今日的 HH:MM 時(shí)刻進(jìn)行,若該時(shí)刻已超過,則明天的 HH:MM 進(jìn)行此工作。HH:MM YYYY-MM-DD ex> 04:00 2009-03-17強(qiáng)制規(guī)定在某年某月的某一天的特殊時(shí)刻進(jìn)行該工作!HH:MM[am|pm] [Month] [Date] ex> 04pm March 17也是一樣,強(qiáng)制在某年某月某日的某時(shí)刻進(jìn)行!HH:MM[am|pm] + number [minutes|hours|days|weeks]ex> now + 5 minutes ex> 04pm + 3 days就是說,在某個(gè)時(shí)間點(diǎn)『再加幾個(gè)時(shí)間后』才進(jìn)行。

    老實(shí)說,這個(gè) at 命令的下達(dá)最重要的地方在於『時(shí)間』的指定了!鳥哥喜歡使用『 now + ... 』的方式來定義現(xiàn)在過多少時(shí)間再進(jìn)行工作,但有時(shí)也需要定義特定的時(shí)間點(diǎn)來進(jìn)行!底下的范例先看看羅!

    范例一:再過五分鐘后,將 /root/.bashrc 寄給 root 自己 [root@www ~]# at now + 5 minutes <==記得單位要加 s 喔! at> /bin/mail root -s "testing at job" < /root/.bashrc at> <EOT> <==這里輸入 [ctrl] + d 就會(huì)出現(xiàn) <EOF> 的字樣!代表結(jié)束! job 4 at 2009-03-14 15:38 # 上面這行資訊在說明,第 4 個(gè) at 工作將在 2009/03/14 的 15:38 進(jìn)行! # 而運(yùn)行 at 會(huì)進(jìn)入所謂的 at shell 環(huán)境,讓你下達(dá)多重命令等待運(yùn)行!范例二:將上述的第 4 項(xiàng)工作內(nèi)容列出來查閱 [root@www ~]# at -c 4 #!/bin/sh <==就是透過 bash shell 的啦! # atrun uid=0 gid=0 # mail root 0 umask 22 ....(中間省略許多的環(huán)境變量項(xiàng)目).... cd /root || { <==可以看出,會(huì)到下達(dá) at 時(shí)的工作目錄去運(yùn)行命令echo 'Execution directory inaccessible' >&2exit 1 }/bin/mail root -s "testing at job" < /root/.bashrc # 你可以看到命令運(yùn)行的目錄 (/root),還有多個(gè)環(huán)境變量與實(shí)際的命令內(nèi)容啦!范例三:由於機(jī)房預(yù)計(jì)於 2009/03/18 停電,我想要在 2009/03/17 23:00 關(guān)機(jī)? [root@www ~]# at 23:00 2009-03-17 at> /bin/sync at> /bin/sync at> /sbin/shutdown -h now at> <EOT> job 5 at 2009-03-17 23:00 # 您瞧瞧! at 還可以在一個(gè)工作內(nèi)輸入多個(gè)命令呢!不錯(cuò)吧!

    事實(shí)上,當(dāng)我們使用 at 時(shí)會(huì)進(jìn)入一個(gè) at shell 的環(huán)境來讓使用者下達(dá)工作命令,此時(shí),建議你最好使用絕對(duì)路徑來下達(dá)你的命令,比較不會(huì)有問題喔!由於命令的下達(dá)與 PATH 變量有關(guān),同時(shí)與當(dāng)時(shí)的工作目錄也有關(guān)連 (如果有牽涉到文件的話),因此使用絕對(duì)路徑來下達(dá)命令,會(huì)是比較一勞永逸的方法。為什么呢?舉例來說,你在 /tmp 下達(dá)『 at now 』然后輸入『 mail root -s "test" < .bashrc 』,問一下,那個(gè) .bashrc 的文件會(huì)是在哪里?答案是『 /tmp/.bashrc 』!因?yàn)?span id="ozvdkddzhkzd" class="text_import2">at 在運(yùn)行時(shí),會(huì)跑到當(dāng)時(shí)下達(dá) at 命令的那個(gè)工作目錄的緣故啊!

    有些朋友會(huì)希望『我要在某某時(shí)刻,在我的終端機(jī)顯示出 Hello 的字樣』,然后就在 at 里面下達(dá)這樣的資訊『echo "Hello" 』。等到時(shí)間到了,卻發(fā)現(xiàn)沒有任何信息在螢?zāi)簧巷@示,這是啥原因啊?這是因?yàn)?at 的運(yùn)行與終端機(jī)環(huán)境無關(guān),而所有 standard output/standard error output都會(huì)傳送到運(yùn)行者的 mailbox 去啦!所以在終端機(jī)當(dāng)然看不到任何資訊。那怎辦?沒關(guān)系,可以透過終端機(jī)的裝置來處理!假如你在 tty1 登陸,則可以使用『 echo "Hello" > /dev/tty1 』來取代。

    Tips:
    要注意的是,如果在 at shell 內(nèi)的命令并沒有任何的信息輸出,那么 at 默認(rèn)不會(huì)發(fā) email 給運(yùn)行者的。如果你想要讓 at 無論如何都發(fā)一封 email 告知你是否運(yùn)行了命令,那么可以使用『 at -m 時(shí)間格式 』來下達(dá)命令喔!at 就會(huì)傳送一個(gè)信息給運(yùn)行者,而不論該命令運(yùn)行有無信息輸出了!

    at 有另外一個(gè)很棒的優(yōu)點(diǎn),那就是『背景運(yùn)行』的功能了!什么是背景運(yùn)行啊?很難了解嗎?其實(shí)與 bash 的 nohup (第十七章) 類似啦!鳥哥提我自己的幾個(gè)例子來給您聽聽,您就了了!

    • 離線繼續(xù)工作的任務(wù):鳥哥初次接觸 Unix 為的是要跑空氣品質(zhì)模式,那是一種大型的程序,這個(gè)程序在當(dāng)時(shí)的硬件底下跑,一個(gè)案例要跑 3 天!由於鳥哥也要進(jìn)行其他研究工作,因此常常使用 Windows98 來連線到 Unix 工作站跑那個(gè) 3 天的案例!結(jié)果你也該知道, Windows 98 連開三天而不死機(jī)的機(jī)率是很低的~@_@~而死機(jī)時(shí),所有在 Windows 上的連線都會(huì)中斷!包括鳥哥在跑的那個(gè)程序也中斷了~嗚嗚~明明再三個(gè)鐘頭就跑完的程序,由於死機(jī)害我又得跑 3 天!

    • 另一個(gè)常用的時(shí)刻則是例如上面的范例三,由於某個(gè)突發(fā)狀況導(dǎo)致你必須要進(jìn)行某項(xiàng)工作時(shí),這個(gè) at 就很好用啦!

    由於 at 工作排程的使用上,系統(tǒng)會(huì)將該項(xiàng) at 工作獨(dú)立出你的 bash 環(huán)境中,直接交給系統(tǒng)的 atd 程序來接管,因此,當(dāng)你下達(dá)了 at 的工作之后就可以立刻離線了,剩下的工作就完全交給 Linux 管理即可!所以羅,如果有長時(shí)間的網(wǎng)絡(luò)工作時(shí),嘿嘿!使用 at 可以讓你免除網(wǎng)絡(luò)斷線后的困擾喔! ^_^


    • at 工作的管理

    那么萬一我下達(dá)了 at 之后,才發(fā)現(xiàn)命令輸入錯(cuò)誤,該如何是好?就將他移除啊!利用 atq 與 atrm 吧!

    [root@www ~]# atq [root@www ~]# atrm (jobnumber)范例一:查詢目前主機(jī)上面有多少的 at 工作排程? [root@www ~]# atq 5 2009-03-17 23:00 a root # 上面說的是:『在 2009/03/17 的 23:00 有一項(xiàng)工作,該項(xiàng)工作命令下達(dá)者為 # root』而且,該項(xiàng)工作的工作號(hào)碼 (jobnumber) 為 5 號(hào)喔!范例二:將上述的第 5 個(gè)工作移除! [root@www ~]# atrm 5 [root@www ~]# atq # 沒有任何資訊,表示該工作被移除了!

    如此一來,你可以利用 atq 來查詢,利用 atrm 來刪除錯(cuò)誤的命令,利用 at 來直接下達(dá)單一工作排程!很簡(jiǎn)單吧!不過,有個(gè)問題需要處理一下。如果你是在一個(gè)非常忙碌的系統(tǒng)下運(yùn)行 at ,能不能指定你的工作在系統(tǒng)較閑的時(shí)候才進(jìn)行呢?可以的,那就使用 batch 命令吧!


    • batch:系統(tǒng)有空時(shí)才進(jìn)行背景任務(wù)

    其實(shí) batch 是利用 at 來進(jìn)行命令的下達(dá)啦!只是加入一些控制參數(shù)而已。這個(gè) batch 神奇的地方在於:他會(huì)在 CPU 工作負(fù)載小於 0.8 的時(shí)候,才進(jìn)行你所下達(dá)的工作任務(wù)啦!那什么是負(fù)載 0.8 呢?這個(gè)負(fù)載的意思是: CPU 在單一時(shí)間點(diǎn)所負(fù)責(zé)的工作數(shù)量。不是 CPU 的使用率喔!舉例來說,如果我有一只程序他需要一直使用 CPU 的運(yùn)算功能,那么此時(shí) CPU 的使用率可能到達(dá) 100% ,但是 CPU 的工作負(fù)載則是趨近於『 1 』,因?yàn)?CPU 僅負(fù)責(zé)一個(gè)工作嘛!如果同時(shí)運(yùn)行這樣的程序兩支呢?CPU 的使用率還是 100% ,但是工作負(fù)載則變成 2 了!了解乎?

    所以也就是說,當(dāng) CPU 的工作負(fù)載越大,代表 CPU 必須要在不同的工作之間進(jìn)行頻繁的工作切換。這樣的 CPU 運(yùn)行情況我們?cè)诘诹阏掠姓勥^,忘記的話請(qǐng)回去瞧瞧!因?yàn)橐恢鼻袚Q工作,所以會(huì)導(dǎo)致系統(tǒng)忙碌啊!系統(tǒng)如果很忙碌,還要額外進(jìn)行 at ,不太合理!所以才有 batch 命令的產(chǎn)生!

    那么 batch 如何下達(dá)命令呢?很簡(jiǎn)單啊!與 at 相同啦!例如下面的范例:

    范例一:同樣是機(jī)房停電在 2009/3/17 23:00 關(guān)機(jī),但若當(dāng)時(shí)系統(tǒng)負(fù)載太高,則暫緩運(yùn)行 [root@www ~]# batch 23:00 2009-3-17 at> sync at> sync at> shutdown -h now at> <EOT> job 6 at 2009-03-17 23:00[root@www ~]# atq 6 2009-03-17 23:00 b root [root@www ~]# atrm 6

    你會(huì)發(fā)現(xiàn)其實(shí) batch 也是使用 atq/atrm 來管理的!這樣了解乎?


    循環(huán)運(yùn)行的例行性工作排程

    相對(duì)於 at 是僅運(yùn)行一次的工作,循環(huán)運(yùn)行的例行性工作排程則是由 cron (crond)這個(gè)系統(tǒng)服務(wù)來控制的。剛剛談過 Linux 系統(tǒng)上面原本就有非常多的例行性工作,因此這個(gè)系統(tǒng)服務(wù)是默認(rèn)啟動(dòng)的。另外,由於使用者自己也可以進(jìn)行例行性工作排程,所以羅, Linux 也提供使用者控制例行性工作排程的命令 (crontab)。底下我們分別來聊一聊羅!


    使用者的配置

    使用者想要?jiǎng)?chuàng)建循環(huán)型工作排程時(shí),使用的是 crontab 這個(gè)命令啦~不過,為了安全性的問題,與 at 同樣的,我們可以限制使用 crontab 的使用者帳號(hào)喔!使用的限制數(shù)據(jù)有:

    • /etc/cron.allow
      將可以使用 crontab 的帳號(hào)寫入其中,若不在這個(gè)文件內(nèi)的使用者則不可使用 crontab;

    • /etc/cron.deny
      將不可以使用 crontab 的帳號(hào)寫入其中,若未記錄到這個(gè)文件當(dāng)中的使用者,就可以使用 crontab 。

    與 at 很像吧!同樣的,以優(yōu)先順序來說, /etc/cron.allow 比 /etc/cron.deny 要優(yōu)先,而判斷上面,這兩個(gè)文件只選擇一個(gè)來限制而已,因此,建議你只要保留一個(gè)即可,免得影響自己在配置上面的判斷!一般來說,系統(tǒng)默認(rèn)是保留 /etc/cron.deny ,你可以將不想讓他運(yùn)行 crontab 的那個(gè)使用者寫入 /etc/cron.deny 當(dāng)中,一個(gè)帳號(hào)一行!

    當(dāng)使用者使用 crontab 這個(gè)命令來創(chuàng)建工作排程之后,該項(xiàng)工作就會(huì)被紀(jì)錄到 /var/spool/cron/ 里面去了,而且是以帳號(hào)來作為判別的喔!舉例來說, dmtsai 使用 crontab 后,他的工作會(huì)被紀(jì)錄到 /var/spool/cron/dmtsai 里頭去!但請(qǐng)注意,不要使用 vi 直接編輯該文件,因?yàn)榭赡苡伸遁斎胝Z法錯(cuò)誤,會(huì)導(dǎo)致無法運(yùn)行 cron 喔!另外, cron 運(yùn)行的每一項(xiàng)工作都會(huì)被紀(jì)錄到/var/log/cron 這個(gè)登錄檔中,所以羅,如果你的 Linux 不知道有否被植入木馬時(shí),也可以搜尋一下 /var/log/cron 這個(gè)登錄檔呢!

    好了,那么我們就來聊一聊 crontab 的語法吧!

    [root@www ~]# crontab [-u username] [-l|-e|-r] 選項(xiàng)與參數(shù): -u :只有 root 才能進(jìn)行這個(gè)任務(wù),亦即幫其他使用者創(chuàng)建/移除 crontab 工作排程; -e :編輯 crontab 的工作內(nèi)容 -l :查閱 crontab 的工作內(nèi)容 -r :移除所有的 crontab 的工作內(nèi)容,若僅要移除一項(xiàng),請(qǐng)用 -e 去編輯。范例一:用 dmtsai 的身份在每天的 12:00 發(fā)信給自己 [dmtsai@www ~]$ crontab -e # 此時(shí)會(huì)進(jìn)入 vi 的編輯畫面讓您編輯工作!注意到,每項(xiàng)工作都是一行。 0 12 * * * mail dmtsai -s "at 12:00" < /home/dmtsai/.bashrc #分 時(shí) 日 月 周 |<==============命令串========================>|

    默認(rèn)情況下,任何使用者只要不被列入 /etc/cron.deny 當(dāng)中,那么他就可以直接下達(dá)『 crontab -e 』去編輯自己的例行性命令了!整個(gè)過程就如同上面提到的,會(huì)進(jìn)入 vi 的編輯畫面,然后以一個(gè)工作一行來編輯,編輯完畢之后輸入『 :wq 』儲(chǔ)存后離開 vi 就可以了!而每項(xiàng)工作 (每行) 的格式都是具有六個(gè)欄位,這六個(gè)欄位的意義為:

    代表意義分鐘小時(shí)日期月份命令
    數(shù)字范圍0-590-231-311-120-7呀就命令啊

    比較有趣的是那個(gè)『周』喔!周的數(shù)字為 0 或 7 時(shí),都代表『星期天』的意思!另外,還有一些輔助的字符,大概有底下這些:

    特殊字符代表意義
    *(星號(hào))代表任何時(shí)刻都接受的意思!舉例來說,范例一內(nèi)那個(gè)日、月、周都是 * ,就代表著『不論何月、何日的禮拜幾的 12:00 都運(yùn)行后續(xù)命令』的意思!
    ,(逗號(hào))代表分隔時(shí)段的意思。舉例來說,如果要下達(dá)的工作是 3:00 與 6:00 時(shí),就會(huì)是: 0 3,6 * * * command 時(shí)間參數(shù)還是有五欄,不過第二欄是 3,6 ,代表 3 與 6 都適用!
    -(減號(hào))代表一段時(shí)間范圍內(nèi),舉例來說, 8 點(diǎn)到 12 點(diǎn)之間的每小時(shí)的 20 分都進(jìn)行一項(xiàng)工作: 20 8-12 * * * command 仔細(xì)看到第二欄變成 8-12 喔!代表 8,9,10,11,12 都適用的意思!
    /n(斜線)那個(gè) n 代表數(shù)字,亦即是『每隔 n 單位間隔』的意思,例如每五分鐘進(jìn)行一次,則:
    */5 * * * * command 很簡(jiǎn)單吧!用 * 與 /5 來搭配,也可以寫成 0-59/5 ,相同意思!

    我們就來搭配幾個(gè)例子練習(xí)看看吧!底下的案例請(qǐng)實(shí)際用 dmtsai 這個(gè)身份作看看喔!后續(xù)的動(dòng)作才能夠搭配起來!

    例題: 假若你的女朋友生日是 5 月 2 日,你想要在 5 月 1 日的 23:59 發(fā)一封信給他,這封信的內(nèi)容已經(jīng)寫在/home/dmtsai/lover.txt 內(nèi)了,該如何進(jìn)行? 答: 直接下達(dá) crontab -e 之后,編輯成為: 59 23 1 5 * mail kiki < /home/dmtsai/lover.txt 那樣的話,每年 kiki 都會(huì)收到你的這封信喔!(當(dāng)然羅,信的內(nèi)容就要每年變一變啦!)

    例題: 假如每五分鐘需要運(yùn)行 /home/dmtsai/test.sh 一次,又該如何? 答: 同樣使用 crontab -e 進(jìn)入編輯: */5 * * * * /home/dmtsai/test.sh

    那個(gè) crontab 每個(gè)人都只有一個(gè)文件存在,就是在 /var/spool/cron 里面啊!還有建議您:『命令下達(dá)時(shí),最好使用絕對(duì)路徑,這樣比較不會(huì)找不到運(yùn)行檔喔!』

    例題: 假如你每星期六都與朋友有約,那么想要每個(gè)星期五下午 4:30 告訴你朋友星期六的約會(huì)不要忘記,則: 答: 還是使用 crontab -e 啊! 30 16 * * 5 mail friend@his.server.name < /home/dmtsai/friend.txt

    真的是很簡(jiǎn)單吧!呵呵!那么,該如何查詢使用者目前的 crontab 內(nèi)容呢?我們可以這樣來看看:

    [dmtsai@www ~]$ crontab -l 59 23 1 5 * mail kiki < /home/dmtsai/lover.txt */5 * * * * /home/dmtsai/test.sh 30 16 * * 5 mail friend@his.server.name < /home/dmtsai/friend.txt# 注意,若僅想要移除一項(xiàng)工作而已的話,必須要用 crontab -e 去編輯~ # 如果想要全部的工作都移除,才使用 crontab -r 喔! [dmtsai@www ~]$ crontab -r [dmtsai@www ~]$ crontab -l no crontab for dmtsai

    看到了嗎? crontab 『整個(gè)內(nèi)容都不見了!』所以請(qǐng)注意:『如果只是要?jiǎng)h除某個(gè) crontab 的工作項(xiàng)目,那么請(qǐng)使用 crontab -e 來重新編輯即可!』如果使用 -r 的參數(shù),是會(huì)將所有的 crontab 數(shù)據(jù)內(nèi)容都刪掉的!千萬注意了!


    系統(tǒng)的配置檔: /etc/crontab

    這個(gè)『 crontab -e 』是針對(duì)使用者的 cron 來設(shè)計(jì)的,如果是『系統(tǒng)的例行性任務(wù)』時(shí),該怎么辦呢?是否還是需要以 crontab -e 來管理你的例行性工作排程呢?當(dāng)然不需要,你只要編輯/etc/crontab 這個(gè)文件就可以啦!有一點(diǎn)需要特別注意喔!那就是crontab -e 這個(gè) crontab 其實(shí)是 /usr/bin/crontab 這個(gè)運(yùn)行檔,但是 /etc/crontab可是一個(gè)『純文字檔』喔!你可以 root 的身份編輯一下這個(gè)文件哩!

    基本上, cron 這個(gè)服務(wù)的最低偵測(cè)限制是『分鐘』,所以『 cron會(huì)每分鐘去讀取一次 /etc/crontab 與 /var/spool/cron 里面的數(shù)據(jù)內(nèi)容』,因此,只要你編輯完 /etc/crontab 這個(gè)文件,并且將他儲(chǔ)存之后,那么 cron 的配置就自動(dòng)的會(huì)來運(yùn)行了!

    Tips:
    在 Linux 底下的 crontab 會(huì)自動(dòng)的幫我們每分鐘重新讀取一次 /etc/crontab 的例行工作事項(xiàng),但是某些原因或者是其他的 Unix 系統(tǒng)中,由於 crontab 是讀到內(nèi)存當(dāng)中的,所以在你修改完 /etc/crontab 之后,可能并不會(huì)馬上運(yùn)行,這個(gè)時(shí)候請(qǐng)重新啟動(dòng) crond 這個(gè)服務(wù)吧!『/etc/init.d/crond restart』

    廢話少說,我們就來看一下這個(gè) /etc/crontab 的內(nèi)容吧!

    [root@www ~]# cat /etc/crontab SHELL=/bin/bash <==使用哪種 shell 介面 PATH=/sbin:/bin:/usr/sbin:/usr/bin <==運(yùn)行檔搜尋路徑 MAILTO=root <==若有額外STDOUT,以 email將數(shù)據(jù)送給誰 HOME=/ <==默認(rèn)此 shell 的家目錄所在# run-parts 01 * * * * root run-parts /etc/cron.hourly <==每小時(shí) 02 4 * * * root run-parts /etc/cron.daily <==每天 22 4 * * 0 root run-parts /etc/cron.weekly <==每周日 42 4 1 * * root run-parts /etc/cron.monthly <==每個(gè)月 1 號(hào) 分 時(shí) 日 月 周 運(yùn)行者身份 命令串

    看到這個(gè)文件的內(nèi)容你大概就了解了吧!呵呵,沒錯(cuò)!這個(gè)文件與將剛剛我們下達(dá) crontab -e 的內(nèi)容幾乎完全一模一樣!只是有幾個(gè)地方不太相同:

    • MAILTO=root

      這個(gè)項(xiàng)目是說,當(dāng) /etc/crontab 這個(gè)文件中的例行性工作的命令發(fā)生錯(cuò)誤時(shí),或者是該工作的運(yùn)行結(jié)果有 STDOUT/STDERR 時(shí),會(huì)將錯(cuò)誤信息或者是螢?zāi)伙@示的信息傳給誰?默認(rèn)當(dāng)然是由系統(tǒng)直接寄發(fā)一封 mail 給 root 啦!不過,由於 root 并無法在用戶端中以 POP3 之類的軟件收信,因此,鳥哥通常都將這個(gè) e-mail 改成自己的帳號(hào),好讓我隨時(shí)了解系統(tǒng)的狀況!例如:MAILTO=dmtsai@my.host.name

    • PATH=....

      還記得我們?cè)诘谑徽碌?BASH 當(dāng)中一直提到的運(yùn)行檔路徑問題吧!沒錯(cuò)啦!這里就是輸入運(yùn)行檔的搜尋路徑!使用默認(rèn)的路徑配置就已經(jīng)很足夠了!

    • 01 * * * * root run-parts /etc/cron.hourly

      這個(gè) /etc/crontab 里面預(yù)配置義出四項(xiàng)工作任務(wù),分別是每小時(shí)、每天、每周及每個(gè)月分別進(jìn)行一次的工作!但是在五個(gè)欄位后面接的并不是命令,而是一個(gè)新的欄位,那就是『運(yùn)行后面那串命令的身份』為何!這與使用者的 crontab -e 不相同。由於使用者自己的 crontab 并不需要指定身份,但 /etc/crontab 里面當(dāng)然要指定身份啦!以上表的內(nèi)容來說,系統(tǒng)默認(rèn)的例行性工作是以 root的身份來進(jìn)行的。

      那么后面那串命令是什么呢?你可以使用『 which run-parts 』搜尋看看,其實(shí)那是一個(gè) bash script 啦!如果你直接進(jìn)入 /usr/bin/run-parts 去看看,會(huì)發(fā)現(xiàn)這支命令會(huì)將后面接的『目錄』內(nèi)的所有文件捉出來運(yùn)行!這也就是說『如果你想讓系統(tǒng)每小時(shí)主動(dòng)幫你運(yùn)行某個(gè)命令,將該命令寫成 script,并將該文件放置到 /etc/cron.hourly/ 目錄下即可』的意思!

      現(xiàn)在你知道系統(tǒng)是如何進(jìn)行他默認(rèn)的一堆例行性工作排程了嗎?如果你下達(dá)『 ll /etc/cron.daily 』就可以看到一堆文件,那些文件就是系統(tǒng)提供的 script ,而這堆 scripts 將會(huì)在每天的凌晨 4:02 開始運(yùn)行!這也是為啥如果你是夜貓族,就會(huì)發(fā)現(xiàn)奇怪的是,Linux 系統(tǒng)為何早上 4:02 開始會(huì)很忙碌的發(fā)出一些硬盤跑動(dòng)的聲音!因?yàn)樗仨氁M(jìn)行makewhatis, updatedb, rpm rebuild 等等的任務(wù)嘛!

    由於 CentOS 提供的 run-parts 這個(gè) script 的輔助,因此 /etc/crontab 這個(gè)文件里面支持兩種下達(dá)命令的方式,一種是直接下達(dá)命令,一種則是以目錄來規(guī)劃,例如:

    • 命令型態(tài)
      01 * * * * dmtsai mail -s "testing" kiki < /home/dmtsai/test.txt
      以 dmtsai 這個(gè)使用者的身份,在每小時(shí)運(yùn)行一次 mail 命令。

    • 目錄規(guī)劃
      */5 * * * * root run-parts /root/runcron
      創(chuàng)建一個(gè) /root/runcron 的目錄,將要每隔五分鐘運(yùn)行的『可運(yùn)行檔』都寫到該目錄下,就可以讓系統(tǒng)每五分鐘運(yùn)行一次該目錄下的所有可運(yùn)行檔。

    好!你現(xiàn)在大概了解了這一個(gè)咚咚吧!OK!假設(shè)你現(xiàn)在要作一個(gè)目錄,讓系統(tǒng)可以每 2 分鐘去運(yùn)行這個(gè)目錄下的所有可以運(yùn)行的文件,你可以寫下如下的這一行在 /etc/crontab 中:

    */2 * * * * root run-parts /etc/cron.min

    當(dāng)然羅, /etc/cron.min 這個(gè)目錄是需要存在的喔!那如果我需要運(yùn)行的是一個(gè)『程序』而已,不需要用到一個(gè)目錄呢?該如何是好?例如在偵測(cè)網(wǎng)絡(luò)流量時(shí),我們希望每五分鐘偵測(cè)分析一次,可以這樣寫:

    */5 * * * * root /bin/mrtg /etc/mrtg/mrtg.cfg

    如何!創(chuàng)建例行性命令很簡(jiǎn)單吧!如果你是系統(tǒng)管理員而且你的工作又是系統(tǒng)維護(hù)方面的例行任務(wù)時(shí),直接修改 /etc/crontab 這個(gè)文件即可喔!又便利,又方便管理呢!


    一些注意事項(xiàng)

    有的時(shí)候,我們以系統(tǒng)的 cron 來進(jìn)行例行性工作的創(chuàng)建時(shí),要注意一些使用方面的特性。舉例來說,如果我們有四個(gè)工作都是五分鐘要進(jìn)行一次的,那么是否這四個(gè)動(dòng)作全部都在同一個(gè)時(shí)間點(diǎn)進(jìn)行?如果同時(shí)進(jìn)行,該四個(gè)動(dòng)作又很耗系統(tǒng)資源,如此一來,每五分鐘不是會(huì)讓系統(tǒng)忙得要死?呵呵!此時(shí)好好的分配一些運(yùn)行時(shí)間就 OK 啦!所以,注意一下:


    • 資源分配不均的問題

    當(dāng)大量使用 crontab 的時(shí)候,總是會(huì)有問題發(fā)生的,最嚴(yán)重的問題就是『系統(tǒng)資源分配不均』的問題,以鳥哥的系統(tǒng)為例,我有偵測(cè)主機(jī)流量的資訊,包括:

    • 流量
    • 區(qū)域內(nèi)其他 PC 的流量偵測(cè)
    • CPU 使用率
    • RAM 使用率
    • 線上人數(shù)即時(shí)偵測(cè)

    如果每個(gè)流程都在同一個(gè)時(shí)間啟動(dòng)的話,那么在某個(gè)時(shí)段時(shí),我的系統(tǒng)會(huì)變的相當(dāng)?shù)姆泵?#xff0c;所以,這個(gè)時(shí)候就必須要分別配置啦!我可以這樣做:

    [root@www ~]# vi /etc/crontab 1,6,11,16,21,26,31,36,41,46,51,56 * * * * root CMD1 2,7,12,17,22,27,32,37,42,47,52,57 * * * * root CMD2 3,8,13,18,23,28,33,38,43,48,53,58 * * * * root CMD3 4,9,14,19,24,29,34,39,44,49,54,59 * * * * root CMD4

    看到了沒?那個(gè)『 , 』分隔的時(shí)候,請(qǐng)注意,不要有空白字節(jié)!(連續(xù)的意思)如此一來,則可以將每五分鐘工作的流程分別在不同的時(shí)刻來工作!則可以讓系統(tǒng)的運(yùn)行較為順暢呦!


    • 取消不要的輸出項(xiàng)目

    另外一個(gè)困擾發(fā)生在『 當(dāng)有運(yùn)行成果或者是運(yùn)行的項(xiàng)目中有輸出的數(shù)據(jù)時(shí),該數(shù)據(jù)將會(huì)mail 給 MAILTO 配置的帳號(hào) 』,好啦,那么當(dāng)有一個(gè)排程一直出錯(cuò)(例如 DNS的偵測(cè)系統(tǒng)當(dāng)中,若 DNS 上一級(jí)主機(jī)掛掉,那么你就會(huì)一直收到錯(cuò)誤信息!)怎么辦?呵呵!還記得十一章談到的數(shù)據(jù)流重導(dǎo)向吧?直接以『命令重導(dǎo)向』將輸出的結(jié)果輸出到/dev/null 這個(gè)垃圾桶當(dāng)中就好了!


    • 安全的檢驗(yàn)

    很多時(shí)候被植入木馬都是以例行命令的方式植入的,所以可以藉由檢查 /var/log/cron的內(nèi)容來視察是否有『非您配置的 cron 被運(yùn)行了?』這個(gè)時(shí)候就需要小心一點(diǎn)羅!


    • 周與日月不可同時(shí)并存

    另一個(gè)需要注意的地方在於:『你可以分別以周或者是日月為單位作為循環(huán),但你不可使用「幾月幾號(hào)且為星期幾」的模式工作』。這個(gè)意思是說,你不可以這樣編寫一個(gè)工作排程:

    30 12 11 9 5 root echo "just test" <==這是錯(cuò)誤的寫法

    本來你以為九月十一號(hào)且為星期五才會(huì)進(jìn)行這項(xiàng)工作,無奈的是,系統(tǒng)可能會(huì)判定每個(gè)星期五作一次,或每年的 9 月 11 號(hào)分別進(jìn)行,如此一來與你當(dāng)初的規(guī)劃就不一樣了~所以羅,得要注意這個(gè)地方!上述的寫法是不對(duì)的喔!


    可喚醒停機(jī)期間的工作任務(wù)

    如果你的 Linux 主機(jī)是作為 24 小時(shí)全天、全年無休的服務(wù)器之用,那么你只要有 atd 與 crond 這兩個(gè)服務(wù)來管理你的例行性工作排程即可。如果你的服務(wù)器并非 24 小時(shí)無間斷的啟動(dòng),那么你該如何進(jìn)行例行性工作?舉例來說,如果你每天晚上都要關(guān)機(jī),等到白天才啟動(dòng)你的 Linux 主機(jī)時(shí),由於 CentOS 默認(rèn)的工作排程都在4:02am 每天進(jìn)行,唔!如此一來不就一堆系統(tǒng)例行工作都沒有人在做了!那可怎么辦?此時(shí)就得要 anacron 這家伙了!


    什么是 anacron

    anacron 并不是用來取代 crontab 的,anacron 存在的目的就在於我們上頭提到的,在處理非 24 小時(shí)一直啟動(dòng)的 Linux 系統(tǒng)的 crontab 的運(yùn)行!所以 anacron 并不能指定何時(shí)運(yùn)行某項(xiàng)任務(wù),而是以天為單位或者是在啟動(dòng)后立刻進(jìn)行 anacron 的動(dòng)作,他會(huì)去偵測(cè)停機(jī)期間應(yīng)該進(jìn)行但是并沒有進(jìn)行的crontab 任務(wù),并將該任務(wù)運(yùn)行一遍后,anacron 就會(huì)自動(dòng)停止了。

    由於 anacron 會(huì)以一天、七天、一個(gè)月為期去偵測(cè)系統(tǒng)未進(jìn)行的 crontab 任務(wù),因此對(duì)於某些特殊的使用環(huán)境非常有幫助。舉例來說,如果你的 Linux 主機(jī)是放在公司給同仁使用的,因?yàn)橹苣┘偃沾蠹叶疾辉谒砸矝]有必要開啟,因此你的 Linux 是周末都會(huì)關(guān)機(jī)兩天的。但是 crontab 大多在每天的凌晨以及周日的早上進(jìn)行各項(xiàng)任務(wù),偏偏你又關(guān)機(jī)了,此時(shí)系統(tǒng)很多 crontab 的任務(wù)就無法進(jìn)行。 anacron 剛好可以解決這個(gè)問題!

    那么 anacron 又是怎么知道我們的系統(tǒng)啥時(shí)關(guān)機(jī)的呢?這就得要使用 anacron 讀取的時(shí)間記錄檔 (timestamps) 了!anacron 會(huì)去分析現(xiàn)在的時(shí)間與時(shí)間記錄檔所記載的上次運(yùn)行 anacron 的時(shí)間,兩者比較后若發(fā)現(xiàn)有差異,那就是在某些時(shí)刻沒有進(jìn)行 crontab 羅!此時(shí) anacron 就會(huì)開始運(yùn)行未進(jìn)行的 crontab 任務(wù)了!所以 anacron 其實(shí)也是透過 crontab 來運(yùn)行的!因此 anacron 運(yùn)行的時(shí)間通常有兩個(gè),一個(gè)是系統(tǒng)啟動(dòng)期間運(yùn)行,一個(gè)是寫入 crontab 的排程中。這樣才能夠在特定時(shí)間分析系統(tǒng)未進(jìn)行的 crontab 工作嘛!了解乎!


    anacron 與 /etc/anacrontab

    anacron 其實(shí)是一支程序并非一個(gè)服務(wù)!這支程序在 CentOS 當(dāng)中已經(jīng)進(jìn)入 crontab 的排程喔!不相信嗎?你可以這樣追蹤看看:

    [root@www ~]# ll /etc/cron*/*ana* -rwxr-xr-x 1 root root 379 Mar 28 2007 /etc/cron.daily/0anacron -rwxr-xr-x 1 root root 381 Mar 28 2007 /etc/cron.monthly/0anacron -rwxr-xr-x 1 root root 380 Mar 28 2007 /etc/cron.weekly/0anacron # 剛好是每天、每周、每月有排程的工作目錄!查閱一下每天的任務(wù)[root@www ~]# cat /etc/cron.daily/0anacron if [ ! -e /var/run/anacron.pid ]; thenanacron -u cron.daily fi # 所以其實(shí)也僅是運(yùn)行 anacron -u 的命令!因此我們得來談?wù)勥@支程序!

    基本上, anacron 的語法如下:

    [root@www ~]# anacron [-sfn] [job].. [root@www ~]# anacron -u [job].. 選項(xiàng)與參數(shù): -s :開始一連續(xù)的運(yùn)行各項(xiàng)工作 (job),會(huì)依據(jù)時(shí)間記錄檔的數(shù)據(jù)判斷是否進(jìn)行; -f :強(qiáng)制進(jìn)行,而不去判斷時(shí)間記錄檔的時(shí)間戳記; -n :立刻進(jìn)行未進(jìn)行的任務(wù),而不延遲 (delay) 等待時(shí)間; -u :僅升級(jí)時(shí)間記錄檔的時(shí)間戳記,不進(jìn)行任何工作。 job :由 /etc/anacrontab 定義的各項(xiàng)工作名稱。

    所以我們發(fā)現(xiàn)其實(shí) /etc/cron.daily/0anacron 僅進(jìn)行時(shí)間戳記的升級(jí),而沒有進(jìn)行任何 anacron 的動(dòng)作!在我們的 CentOS 中,anacron 的進(jìn)行其實(shí)是在啟動(dòng)完成后才進(jìn)行的一項(xiàng)工作任務(wù),你也可以將 anacron 排入 crontab 的排程中。但是為了擔(dān)心 anacron 誤判時(shí)間參數(shù),因此 /etc/cron.daily/ 里面的 anacron 才會(huì)在檔名之前加個(gè) 0 (0anacron),讓 anacron 最先進(jìn)行!就是為了讓時(shí)間戳記先升級(jí)!以避免 anacron 誤判 crontab 尚未進(jìn)行任何工作的意思。

    接下來我們看一下 /etc/anacrontab 的內(nèi)容好了:

    [root@www ~]# cat /etc/anacrontab SHELL=/bin/sh PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root1 65 cron.daily run-parts /etc/cron.daily 7 70 cron.weekly run-parts /etc/cron.weekly 30 75 cron.monthly run-parts /etc/cron.monthly 天數(shù) 延遲時(shí)間 工作名稱定義 實(shí)際要進(jìn)行的命令串 # 天數(shù)單位為天;延遲時(shí)間單位為分鐘;工作名稱定義可自訂; # 命令串則通常與 crontab 的配置相同![root@www ~]# more /var/spool/anacron/* :::::::::::::: /var/spool/anacron/cron.daily :::::::::::::: 20090315 :::::::::::::: /var/spool/anacron/cron.monthly :::::::::::::: 20090301 :::::::::::::: /var/spool/anacron/cron.weekly :::::::::::::: 20090315 # 上面則是三個(gè)工作名稱的時(shí)間記錄檔以及記錄的時(shí)間戳記

    由於 /etc/cron.daily 內(nèi)的任務(wù)比較多,因此我們使用每天進(jìn)行的任務(wù)來解釋一下 anacron 的運(yùn)行情況好了。anacron 若下達(dá)『 anacron -s cron.daily 』時(shí),他會(huì)這樣運(yùn)行的:

  • 由 /etc/anacrontab 分析到 cron.daily 這項(xiàng)工作名稱的天數(shù)為 1 天;
  • 由 /var/spool/anacron/cron.daily 取出最近一次運(yùn)行 anacron 的時(shí)間戳記;
  • 由上個(gè)步驟與目前的時(shí)間比較,若差異天數(shù)為 1 天以上 (含 1 天),就準(zhǔn)備進(jìn)行命令;
  • 若準(zhǔn)備進(jìn)行命令,根據(jù) /etc/anacrontab 的配置,將延遲 65 分鐘
  • 延遲時(shí)間過后,開始運(yùn)行后續(xù)命令,亦即『 run-parts /etc/cron.daily 』這串命令;
  • 運(yùn)行完畢后, anacron 程序結(jié)束。
  • 所以說,時(shí)間戳記是非常重要的!anacron 是透過該記錄與目前的時(shí)間差異,了解到是否應(yīng)該要進(jìn)行某項(xiàng)任務(wù)的工作!舉例來說,如果我的主機(jī)在 2009/03/15(星期天) 18:00 關(guān)機(jī),然后在 2009/03/16(星期一) 8:00 啟動(dòng),由於我的 crontab 是在早上 04:00 左右進(jìn)行各項(xiàng)任務(wù),由於該時(shí)刻系統(tǒng)是關(guān)機(jī)的,因此時(shí)間戳記依舊為 20090315 (舊的時(shí)間),但是目前時(shí)間已經(jīng)是 20090316 (新的時(shí)間),因此run-parts /etc/cron.daily 就會(huì)在啟動(dòng)過 65 分鐘后開始運(yùn)行了

    所以羅, anacron 并不需要額外的配置,使用默認(rèn)值即可!只是我們的 CentOS 只有在啟動(dòng)時(shí)才會(huì)運(yùn)行anacron 就是了。如果要確定 anacron 是否啟動(dòng)時(shí)會(huì)主動(dòng)的運(yùn)行,你可以下達(dá)下列命令:

    [root@www ~]# chkconfig --list anacron anacron 0:off 1:off 2:on 3:on 4:on 5:on 6:off # 詳細(xì)的 chkconfig 說明我們會(huì)在后續(xù)章節(jié)提到,注意看 3, 5 # 的項(xiàng)目,都是 on !那就是有啟動(dòng)啦!啟動(dòng)時(shí)才會(huì)運(yùn)行的意思!

    現(xiàn)在你知道為什么隔了一陣子才將 CentOS 啟動(dòng),啟動(dòng)過后約 1 小時(shí)左右系統(tǒng)會(huì)有一小段時(shí)間的忙碌!而且硬盤會(huì)跑個(gè)不停!那就是因?yàn)?anacron 正在運(yùn)行過去 crontab 未進(jìn)行的各項(xiàng)工作排程啦!這樣對(duì) anacron 有沒有概念了呢? ^_^


    重點(diǎn)回顧
    • 系統(tǒng)可以透過 at 這個(gè)命令來排程單一工作的任務(wù)!『at TIME』為命令下達(dá)的方法,當(dāng) at 進(jìn)入排程后,系統(tǒng)運(yùn)行該排程工作時(shí),會(huì)到下達(dá)時(shí)的目錄進(jìn)行任務(wù);
    • at 的運(yùn)行必須要有 atd 服務(wù)的支持,且 /etc/at.deny 為控制是否能夠運(yùn)行的使用者帳號(hào);
    • 透過 atq, atrm 可以查詢與刪除 at 的工作排程;
    • batch 與 at 相同,不過 batch 可在 CPU 工作負(fù)載小於 0.8 時(shí)才進(jìn)行后續(xù)的工作排程;
    • 系統(tǒng)的循環(huán)例行性工作排程使用 cron 這個(gè)服務(wù),同時(shí)利用 crontab -e 及 /etc/crontab 進(jìn)行排程的安排;
    • crontab -e 配置項(xiàng)目分為六欄,『分、時(shí)、日、月、周、命令』為其配置依據(jù);
    • /etc/crontab 配置分為七欄,『分、時(shí)、日、月、周、運(yùn)行者、命令』為其配置依據(jù);
    • anacron 配合 /etc/anacrontab 的配置,可以喚醒停機(jī)期間系統(tǒng)未進(jìn)行的 crontab 任務(wù)!

    本章習(xí)題
    ( 要看答案請(qǐng)將鼠標(biāo)移動(dòng)到『答:』底下的空白處,按下左鍵圈選空白處即可察看 ) 簡(jiǎn)答題:
    • 今天假設(shè)我有一個(gè)命令程序,名稱為: ping.sh 這個(gè)檔名!我想要讓系統(tǒng)每三分鐘運(yùn)行這個(gè)文件一次,但是偏偏這個(gè)文件會(huì)有很多的信息顯示出來,所以我的root 帳號(hào)每天都會(huì)收到差不多四百多封的信件,光是收信就差不多快要瘋掉了!那么請(qǐng)問應(yīng)該怎么配置比較好呢? 這個(gè)涉及數(shù)據(jù)流重導(dǎo)向的問題,我們可以將他導(dǎo)入文件或者直接丟棄!如果該信息不重要的話,那么就予以丟棄,如果信息很重要的話,才將他保留下來!假設(shè)今天這個(gè)命令不重要,所以將他丟棄掉!因此,可以這樣寫: */3 * * * * root /usr/local/ping.sh > /dev/null 2>&1
    • 您預(yù)計(jì)要在 2010 年的 2 月 14 日寄出一封給 kiki ,只有該年才寄出!該如何下達(dá)命令? at 1am 2010-02-14
    • 下達(dá) crontab -e 之后,如果輸入這一行,代表什么意思?
      * 15 * * 1-5 /usr/local/bin/tea_time.sh 在每星期的 1~5 ,下午 3 點(diǎn)的每分鐘,共進(jìn)行 60 次 /usr/local/bin/tea_time.sh 這個(gè)文件。要特別注意的是,每個(gè)星期 1~5 的 3 點(diǎn)都會(huì)進(jìn)行 60 次ㄟ!很麻煩吧~是錯(cuò)誤的寫法啦~應(yīng)該是要寫成:
      30 15 * * 1-5 /usr/local/bin/tea_time.sh
    • 我用 vi 編輯 /etc/crontab 這個(gè)文件,我編輯的那一行是這樣的:
      25 00 * * 0 /usr/local/bin/backup.sh
      這一行代表的意義是什么? 這一行代表......沒有任何意義!因?yàn)檎Z法錯(cuò)誤!您必須要了解,在 /etc/crontab 當(dāng)中每一行都必須要有使用者才行!所以,應(yīng)該要將原本那行改成:
      25 00 * * 0 root /usr/local/bin/backup.sh
    • 請(qǐng)問,您的系統(tǒng)每天、每周、每個(gè)月各有進(jìn)行什么工作? 因?yàn)?CentOS 系統(tǒng)默認(rèn)的例行性命令都放置在 /etc/cron.* 里面,所以,你可以自行去:/etc/cron.daily/, /etc/cron.week/, /etc/cron.monthly/ 這三個(gè)目錄內(nèi)看一看,就知道啦! ^_^
    • 每個(gè)星期六凌晨三點(diǎn)去系統(tǒng)搜尋一下內(nèi)有 SUID/SGID 的任何文件!并將結(jié)果輸出到 /tmp/uidgid.files vi /etc/crontab
      0 3 * * 6 root find / -perm +6000 > /tmp/uidgid.files

    2002/05/30:第一次完成
    2003/02/10:重新編排與加入 FAQ
    2005/09/07:將舊的文章移動(dòng)到 此處 。
    2005/09/07:呼呼!終於完成風(fēng)格羅~同時(shí)加入一些習(xí)題練習(xí)。
    2009/03/12:將舊的文件移動(dòng)到此處。
    2009/03/14:加入 batch 這個(gè)項(xiàng)目的說明!與 at 有關(guān)!
    2009/03/15:加入了 anacron 這玩意的簡(jiǎn)單說明!

    2009/09/11:稍微修訂一下說明語氣與連結(jié)數(shù)據(jù)。

    出處:http://vbird.dic.ksu.edu.tw/linux_basic/0430cron.php

    《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀

    總結(jié)

    以上是生活随笔為你收集整理的鸟哥的Linux私房菜(基础篇)- 第十六章、例行性工作排程 (crontab)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

    亚洲性xxxx | 久久精品一区八戒影视 | 久久草网站 | 精品国产午夜 | 美腿丝袜av| 日本性高潮视频 | av久久久 | 成人免费中文字幕 | 人人干在线 | 日韩理论电影在线观看 | 久久9999久久免费精品国产 | 久久福利剧场 | 欧美另类xxxxx | 日本久久成人中文字幕电影 | 国产专区在线 | www.com.日本一级 | 少妇bbbb揉bbbb日本 | av免费在线网站 | 在线a亚洲视频播放在线观看 | 欧美日韩国产亚洲乱码字幕 | 性色视频在线 | 久久综合网色—综合色88 | 美女免费黄网站 | 国产一区免费看 | 成人av中文字幕在线观看 | 久久综合天天 | 麻豆国产视频 | 成人资源在线播放 | 久久亚洲区 | 91精品国产乱码在线观看 | 久久久久女人精品毛片九一 | 亚洲色图美腿丝袜 | 中文字幕一区二区三区乱码在线 | 亚洲综合视频在线播放 | 高清一区二区三区 | 99热精品视| 国产精品一级在线 | 日韩精品一区二区三区免费观看 | 国产精品第十页 | 久久影视一区 | 国产一区二区手机在线观看 | 欧美精品xx | 九九九九精品 | 96超碰在线 | 性日韩欧美在线视频 | 96久久| 国产美女视频一区 | 美女搞黄国产视频网站 | 国产免费作爱视频 | 最新真实国产在线视频 | 天天综合久久综合 | 在线观看一区二区精品 | 久久精品牌麻豆国产大山 | 24小时日本在线www免费的 | 精品国产欧美一区二区三区不卡 | 色婷婷久久 | 99在线精品视频观看 | 精品久久精品久久 | 91av超碰| 亚洲经典在线 | 少妇超碰在线 | 一级免费看 | 免费高清在线视频一区· | 欧美日韩视频在线 | 日韩理论电影在线 | 成人免费观看完整版电影 | 久久精品视频在线播放 | 一区二区国产精品 | 亚洲精品一区二区网址 | 9999在线| 国产精品二区三区 | 狠狠色丁香久久婷婷综合五月 | 亚洲经典在线 | 婷婷中文在线 | 亚洲在线视频免费 | aaa日本高清在线播放免费观看 | 亚洲成人中文在线 | 国产精品theporn | 中文字幕 第二区 | 丰满少妇在线观看资源站 | 国产精品 亚洲精品 | 激情深爱五月 | 午夜电影 电影 | 国产精品久久久久久69 | www.狠狠干| 国产 中文 日韩 欧美 | 国产日产精品一区二区三区四区 | 亚洲精品大片www | 色婷婷视频在线 | 九九日韩| 亚洲精品久久久蜜桃直播 | 成人黄性视频 | 香蕉视频亚洲 | 日日干干夜夜 | 亚洲日韩中文字幕 | 在线观看av黄色 | 免费涩涩网站 | 激情av网址 | 在线观看成人av | 国产精品久久久久影院日本 | 欧美精品在线观看一区 | 美女视频黄频大全免费 | 一区二区视频在线免费观看 | 在线观看中文字幕dvd播放 | 日韩免费看视频 | 国产视频一二区 | 久久久精品成人 | 狠狠网亚洲精品 | 又大又硬又黄又爽视频在线观看 | 欧美精品久久久久久久久久 | 五月婷综合 | 免费看久久 | 久久久久成人精品免费播放动漫 | 欧美激情精品久久 | 国产又粗又猛又爽又黄的视频先 | 国产高清中文字幕 | 亚洲国产中文在线 | 日韩高清一二三区 | 最近中文字幕第一页 | 天堂av免费 | 久久久久国产一区二区三区 | 黄色录像av | 播五月综合 | 国产福利小视频在线 | 久久一区二区免费视频 | 国产在线观看你懂的 | 国产成人精品一区二区 | 天天视频亚洲 | 成人av直播| 麻豆视频在线免费 | 粉嫩一区二区三区粉嫩91 | 激情综合交 | 久久综合欧美 | 久久综合综合久久综合 | 黄色片网站 | 欧美日韩一区二区免费在线观看 | 99高清视频有精品视频 | 亚洲精品国产麻豆 | 日韩欧美网址 | 激情网五月婷婷 | 91久草视频 | www一起操| 国产精品国产三级国产aⅴ入口 | 日韩三级在线观看 | 成人精品亚洲 | 国产美女网站在线观看 | 亚洲精品自拍视频在线观看 | 免费观看91视频大全 | 国产精品欧美 | 久久午夜视频 | 99re久久资源最新地址 | 欧美激情精品久久久久 | 日韩中文在线视频 | 黄a网| 国产在线观看网站 | 高清一区二区三区av | 久久99久久久久久 | 一区在线观看 | av网站免费线看精品 | 四虎精品成人免费网站 | 亚洲精品乱码久久久久久写真 | 激情视频免费在线 | 精品自拍sae8—视频 | 在线观看亚洲国产 | 97av.com| 中文字幕在线观看一区二区 | 91在线视频观看 | 日韩在线第一 | 精品一区三区 | 热re99久久精品国产99热 | 国产一级视频在线免费观看 | 精品视频成人 | 精品视频久久 | 国产黄色资源 | 视频在线亚洲 | 99久久精品免费看 | 国产精彩视频一区二区 | 最新国产视频 | 久久99热精品这里久久精品 | 久久免费毛片 | 国产在线观看污片 | 日韩高清网站 | 久久亚洲人 | 久久久久成人精品亚洲国产 | 狠狠狠干狠狠 | 丁香激情综合久久伊人久久 | 成人丁香花| 99久久夜色精品国产亚洲96 | 黄色一集片 | 日韩精品久久久免费观看夜色 | 日韩高清成人在线 | 欧美在线视频一区二区三区 | 久久精品福利 | 在线观看免费版高清版 | 国产精品毛片网 | 欧美极品少妇xbxb性爽爽视频 | 久久爱资源网 | 亚洲国产操 | 性色大片在线观看 | 日韩高清不卡一区二区三区 | 一区二区欧美日韩 | 二区三区精品 | 一区二区三区在线不卡 | 国产精品精品国产色婷婷 | 精品在线观看一区二区 | 国产日韩一区在线 | 91激情视频在线播放 | 三级av网| 色婷av| 成人亚洲网| 国产精品欧美久久久久天天影视 | 日本九九视频 | 日韩午夜av| 欧美成人精品欧美一级乱黄 | 91九色在线观看视频 | www在线免费观看 | 国产不卡免费av | 国产成本人视频在线观看 | 午夜免费视频网站 | 国产少妇在线观看 | 欧美日韩一区二区久久 | 成人99免费视频 | www.干| 国产在线国偷精品产拍免费yy | 九九涩涩av台湾日本热热 | 一级片免费在线 | av永久网址 | 国产中文字幕在线观看 | 国产69精品久久久久久 | 六月丁香婷婷在线 | 国产亚洲精品久久久久久 | 中国一级片在线观看 | 人人爽人人爽人人爽学生一级 | 亚洲成人av电影在线 | 成人在线视频免费观看 | 超碰精品在线 | 在线观看小视频 | 免费看av片网站 | 91看片黄色| 日韩精品一区二区三区免费观看视频 | 亚洲一区精品二人人爽久久 | 久久久国产精华液 | 伊在线视频 | 国产精品99久久久久久小说 | 国产玖玖在线 | 久久99热国产 | 亚洲天天在线日亚洲洲精 | 伊人六月 | 欧美极品久久 | 开心色婷婷| 又爽又黄又无遮挡网站动态图 | 最近能播放的中文字幕 | 国产大尺度视频 | 最新日韩在线观看 | 亚洲欧美日韩精品一区二区 | 欧美日韩精品在线播放 | 日本中文字幕视频 | 日韩黄色软件 | 成人av一区二区兰花在线播放 | 在线免费观看国产视频 | 国产又粗又猛又爽又黄的视频先 | 天天爱天天操天天爽 | 国产精品一区二区三区四区在线观看 | 一区二区三区在线播放 | 国产九色91| 亚洲美女精品视频 | 日韩电影中文,亚洲精品乱码 | 99久久精品免费看国产一区二区三区 | 日韩精品中字 | 欧美成人手机版 | 久久精品79国产精品 | 69亚洲视频 | 在线免费黄色片 | 中文字幕资源在线 | 人人澡av | 久久视频99 | 国产成人精品一区二 | 国产 一区二区三区 在线 | 天天插天天狠 | 国产小视频在线观看 | 超碰在线免费97 | 久久国产精品小视频 | 97视频免费播放 | 91插插影库| 国产高清av免费在线观看 | 99精品在线观看 | 中文字幕免费高清av | 91福利小视频 | 久久人人爽人人 | 日韩中字在线 | 久草手机视频 | 久久精品中文 | 国产精品h在线观看 | av中文字幕在线免费观看 | 麻豆久久精品 | 欧美贵妇性狂欢 | 丰满少妇在线观看网站 | 欧美日韩伦理一区 | 蜜臀久久99精品久久久久久网站 | 伊人中文在线 | 欧美视频二区 | 999免费视频 | 欧美日韩在线看 | 日本视频网 | 日韩黄色免费 | 六月色丁 | 久久人人添人人爽添人人88v | 国产精品爽爽爽 | 性色av一区二区三区在线观看 | 夜添久久精品亚洲国产精品 | 一级片免费在线 | 91在线视频一区 | 精品国产一区二区三区在线观看 | 精品 一区 在线 | 狠狠狠狠狠狠 | caobi视频 | av在线免费观看不卡 | 在线观看免费中文字幕 | 日本精品一二区 | 国产黄色片免费在线观看 | 人人爽人人香蕉 | 中文字幕在线看视频 | 一区二区精品久久 | 97国产精品一区二区 | 亚洲黄色三级 | 久久综合色天天久久综合图片 | av一区二区在线观看中文字幕 | 国产原创91 | 日韩av有码在线 | 久草在线免费看视频 | 久久伦理网 | 免费观看www小视频的软件 | av一级片在线观看 | 欧美精品三级 | 久久狠狠亚洲综合 | 久久久久免费电影 | 久久久国产精品亚洲一区 | 美女免费视频观看网站 | 国产精品ssss在线亚洲 | 91看片在线免费观看 | 在线免费黄色av | 五月综合久久 | 九九视频免费在线观看 | 日韩中文字幕亚洲一区二区va在线 | 黄色毛片电影 | 亚洲高清在线精品 | 日韩av影片在线观看 | 久久久亚洲麻豆日韩精品一区三区 | 黄色三级视频片 | 精品视频97| 免费av电影网站 | 国产视频999 | 成人四虎 | 亚洲免费av片 | 久久天天操| 久久国产精品久久久 | av大片网站 | 麻豆精品视频在线 | 东方av免费在线观看 | 免费日韩av电影 | 午夜视频一区二区三区 | 91在线视频精品 | 亚洲人成人天堂h久久 | 国产一二三精品 | 久久久91精品国产一区二区三区 | 日p在线观看 | 免费在线日韩 | 精品视频久久久 | 免费成人短视频 | 97在线观看免费高清 | 久草在线在线精品观看 | 国产第一福利 | 久久免费精品一区二区三区 | 久久丝袜视频 | 久久免费国产电影 | www.99热精品| 97香蕉久久超级碰碰高清版 | av中文字幕免费在线观看 | 国产在线视频一区二区 | 色综合久久悠悠 | 麻豆传媒视频在线 | 中文永久免费观看 | 亚洲午夜av | 日韩电影中文字幕在线 | 在线v片 | 日韩在线观看视频中文字幕 | 六月丁香激情网 | 日韩美女免费线视频 | 很黄很黄的网站免费的 | 亚洲特级片 | 国产一区二区高清 | 中文字幕在线日亚洲9 | 国产亚洲精品久久久久5区 成人h电影在线观看 | 久草免费在线视频观看 | 日韩在线观看的 | 久久久久久蜜av免费网站 | 国产高清一区二区 | 国产精品成人免费精品自在线观看 | 81精品国产乱码久久久久久 | 99精品视频播放 | 欧美性做爰猛烈叫床潮 | 玖玖在线精品 | 99久久精品无码一区二区毛片 | 欧美一区三区四区 | 色爱区综合激月婷婷 | 丁香婷五月 | 中文成人字幕 | 波多野结衣精品在线 | 天天色天天 | 国产精品久久久久久久久岛 | 四虎影院在线观看av | 精品欧美一区二区三区久久久 | 特级黄色视频毛片 | 国产玖玖精品视频 | 欧美久久久久久久久 | 狠狠操狠狠干天天操 | 亚洲 欧美 变态 国产 另类 | 亚洲欧洲国产日韩精品 | 中文字幕乱视频 | 精品91在线| 成人av影院在线观看 | 国内精品久久久久影院男同志 | 欧美另类69 | 日韩不卡高清视频 | 中文字幕成人一区 | 五月天开心 | 五月天综合色 | 中文在线a√在线 | 久久手机精品视频 | 亚洲国产日本 | 91精选在线 | 精品一区二区三区在线播放 | 欧美日本日韩aⅴ在线视频 插插插色综合 | 在线日韩亚洲 | 亚洲理论在线观看电影 | 欧美性视频网站 | 播五月综合 | 高清一区二区三区av | 91成版人在线观看入口 | 97香蕉视频| 又黄又爽又色无遮挡免费 | 久久综合久色欧美综合狠狠 | 精品五月天 | 成人国产精品免费观看 | 亚洲精品视频在线观看免费视频 | 亚洲国产日韩精品 | 六月丁香在线观看 | 韩国av免费在线 | 青青河边草观看完整版高清 | 国产经典 欧美精品 | 九草视频在线 | 精品国产乱码久久久久久1区二区 | 69久久久久久久 | aaaaaa毛片 | 国产拍揄自揄精品视频麻豆 | 在线国产一区二区三区 | av一级在线 | 91av蜜桃 | 深夜免费福利在线 | 新av在线 | 999久久久精品视频 日韩高清www | 蜜桃视频日本 | 狠狠干夜夜爱 | 久久久久久久免费看 | 91中文字幕在线观看 | 欧美 亚洲 另类 激情 另类 | 在线成人中文字幕 | 五月婷婷亚洲 | www一起操| 国产九九在线 | 中文字幕av电影下载 | 91桃色国产在线播放 | 日本精品视频在线播放 | 久久精品日本啪啪涩涩 | 中文字幕在线观看视频免费 | 天天干天天操天天操 | 狠狠搞,com| 国产97视频在线 | 操久在线 | 四虎影视www| 99视频在线观看视频 | 国产专区在线视频 | 五月天婷亚洲天综合网精品偷 | 久草视频一区 | 在线观看视频三级 | 久久精品99国产 | 九九免费在线观看 | 探花在线观看 | 欧美激情第一页xxx 午夜性福利 | 日本精品一区二区在线观看 | 国产日韩中文在线 | 国产欧美在线一区 | 在线看片成人 | 日韩在线一二三区 | 最新国产精品拍自在线播放 | av免费观看网站 | 国产精品1000 | 在线观看午夜av | 国产永久免费高清在线观看视频 | 婷婷五月情 | 国产一区二区三区免费在线 | 欧美视屏一区二区 | 国产成人三级 | 久久久久久久久毛片精品 | 亚洲一区精品人人爽人人躁 | 中国成人一区 | 综合久久久久久久久 | 午夜精品一区二区国产 | 欧美日韩xx | 中文在线8新资源库 | 国产黄免费在线观看 | 精品国产色 | 永久黄网站色视频免费观看w | 国产 一区二区三区 在线 | 日韩3区 | 成年人在线电影 | 国产日产av | 精品久久在线 | 国产 字幕 制服 中文 在线 | 精品人妖videos欧美人妖 | av在线免费在线观看 | 狠狠激情中文字幕 | av片中文字幕| 狠狠狠色丁香婷婷综合久久五月 | 日本电影黄色 | 操老逼免费视频 | 99激情网| 菠萝菠萝在线精品视频 | 国产精品video | 亚洲综合爱 | 日韩欧美一区二区三区在线观看 | 免费精品国产 | 在线观看日韩中文字幕 | 99久久久国产精品 | 91av片| 中文字幕欧美日韩va免费视频 | 91精品国产成人观看 | 黄色片网站免费 | 久久黄色影视 | 99久久er热在这里只有精品66 | 久久在现 | 精品国产资源 | 99re久久资源最新地址 | 久久国产一区 | 91在线免费看片 | 久久国产精品二国产精品中国洋人 | 国产精品毛片久久蜜 | 激情一区二区三区欧美 | 九九有精品| 国产精品网站 | 久二影院 | 日韩精品久久久久久久电影99爱 | www.av免费观看 | 国产在线传媒 | 高清中文字幕av | av久久久 | 久久一区91 | 日韩在线观看你懂得 | 国语自产偷拍精品视频偷 | 99久久电影 | 精品日韩av | www欧美色 | 911香蕉| av丝袜在线 | 婷婷丁香综合 | 最近最新中文字幕视频 | 日本在线观看中文字幕 | 国产成人精品av在线观 | 黄色1级大片 | 四虎国产精 | 中文字幕一区二区在线观看 | 美女免费视频一区二区 | 日韩精品久久久久久久电影99爱 | 久草电影免费在线观看 | 日韩激情片在线观看 | 欧美日韩裸体免费视频 | 久久亚洲免费视频 | 日韩欧美视频免费观看 | 亚洲精品欧美精品 | 一区二区视频免费在线观看 | 亚洲精品午夜aaa久久久 | 色a资源在线 | 四虎影视4hu4虎成人 | www.五月天婷婷.com | 日色在线视频 | 最新中文在线视频 | 免费视频你懂得 | 91在线精品一区二区 | 美女av免费 | 国产麻豆精品传媒av国产下载 | 国产精品美女久久久久久久 | 中日韩男男gay无套 日韩精品一区二区三区高清免费 | 国产精品片 | 五月婷婷中文字幕 | 最新影院 | 国产91勾搭技师精品 | 中文字幕在线播放第一页 | 久草精品资源 | 免费高清在线一区 | av黄网站| 亚洲经典中文字幕 | 碰超在线97人人 | 一级淫片a| 99综合影院在线 | 黄色片网站av| 久草视频精品 | 91手机视频在线 | 久久精品福利 | 久草在线免费色站 | 国产精品一区二区三区免费视频 | 六月丁香色婷婷 | 天天操天天草 | 国产一区影院 | 韩国在线一区二区 | 高清国产在线一区 | 中文字幕在线国产精品 | 波多野结衣精品 | 91精品伦理 | 九色最新网址 | 国产精品久久一区二区无卡 | 中文字幕在线观看你懂的 | 久久高清免费视频 | 精品uu | 美女网站免费福利视频 | 欧美日韩激情视频8区 | 亚洲专区欧美专区 | 人人揉人人揉人人揉人人揉97 | 97在线观看免费观看 | 日韩在线视频看看 | 亚洲在线国产 | 综合天堂av久久久久久久 | 色在线高清| 一区二区三区在线视频111 | 成人免费视频观看 | 亚洲一区二区天堂 | 亚洲精品乱码久久久久久按摩 | 97视频资源 | 国产精品理论视频 | 久久久久欠精品国产毛片国产毛生 | 91精品国产高清 | www色| 91久久国产自产拍夜夜嗨 | 天天狠狠干 | 精品国产一二三四区 | 久久久久高清 | 久草综合在线 | www.狠狠操 | 一区中文字幕在线观看 | 免费av电影网站 | 九七人人干 | 在线观看久草 | 香蕉视频一级 | 欧美亚洲国产一卡 | 一级片视频在线 | 天天拍天天色 | 狠狠狠狠狠狠天天爱 | av大全在线免费观看 | 成人免费视频a | 9999在线视频 | 日一日操一操 | 超碰免费av| 中文在线最新版天堂 | 国产色综合天天综合网 | 久草免费在线观看视频 | 欧美日韩视频精品 | 国产精品黄| 国产精品女教师 | 在线播放国产精品 | 日日精品 | 亚洲成人免费在线 | 亚洲人成影院在线 | 青青草华人在线视频 | 精品一区免费 | 欧美一级免费片 | 欧美日韩一区二区在线观看 | 国产免费高清视频 | 天海翼一区二区三区免费 | 欧美一区二区在线刺激视频 | 日韩精品一区二 | 亚洲成av人影片在线观看 | 99一级片 | 国产又粗又猛又爽又黄的视频免费 | 午夜色影院 | 天天色成人网 | 亚洲成人免费观看 | 在线免费黄色片 | 国产在线精品观看 | 国产精品18久久久久vr手机版特色 | 国产麻豆视频在线观看 | 视频国产区 | 欧美视频一区二 | av资源免费看 | 黄色影院在线免费观看 | 久久精品国产免费看久久精品 | 色噜噜在线观看视频 | 国产精品视频永久免费播放 | 国产男男gay做爰 | 天天操欧美 | 午夜视频导航 | 亚洲精品99久久久久中文字幕 | 久久免费视频1 | 麻豆视频免费入口 | 日韩理论片中文字幕 | 亚洲清纯国产 | 狠狠躁日日躁夜夜躁av | 久久精品直播 | a在线观看免费视频 | 天天艹天天操 | 激情网五月婷婷 | 亚洲免费av电影 | 天天干天天怕 | 久久99电影 | 少妇性bbb搡bbb爽爽爽欧美 | 中文字幕日韩av | 国产一区在线视频播放 | 色在线最新| 日韩三级不卡 | 亚洲黄色大片 | 91视频网址入口 | 狠狠干天天色 | 欧美在线观看小视频 | 右手影院亚洲欧美 | 九九综合在线 | 国产一卡二卡四卡国 | 天天爱天天操天天射 | 亚洲一级黄色av | 国产成人一区二区三区在线观看 | 日韩美女黄色片 | 99久久超碰中文字幕伊人 | 91久久偷偷做嫩草影院 | 丁香婷婷激情网 | 国产精品无 | 久久不射影院 | 99久久www | 日韩a在线观看 | 日韩久久一区二区 | 成人免费看片网址 | 西西人体4444www高清视频 | 狠狠色丁婷婷日日 | 99国内精品久久久久久久 | 欧美乱淫视频 | 三级在线国产 | 欧美黄色特级片 | 欧美在线一二 | 99视频偷窥在线精品国自产拍 | 超碰人人av| 久草在线中文视频 | 国产二区av | 成人九九视频 | 一区二区三区动漫 | 国产男男gay做爰 | 99精品国产一区二区三区麻豆 | 久久精品国产一区 | 在线观看国产日韩 | 日本深夜福利视频 | 久久99精品久久久久婷婷 | 天天色中文 | 不卡视频一区二区三区 | 国产成年人av | 久久免费黄色网址 | 综合婷婷久久 | 免费av片在线 | 五月天免费网站 | 一级黄色网址 | 久草剧场| 中文字幕之中文字幕 | 久久观看| 欧美日韩不卡一区 | 免费下载高清毛片 | 国产精品久久久久久久久搜平片 | 韩国av不卡| 欧美大片大全 | 蜜臀aⅴ精品一区二区三区 久久视屏网 | www.eeuss影院av撸 | 中文字幕在线观看第三页 | 日韩理论在线 | 精品一区二区精品 | 在线观看av免费观看 | 欧美日韩国产一二 | 99热国产在线 | 天天射色综合 | 国产成人一区二区三区 | 中文字幕色在线 | 久久歪歪| 欧美极品xxx | 成人高清av在线 | 国产精品视频 | 又黄又刺激视频 | a精品视频 | 中文av一区二区 | 日韩一区二区三区视频在线 | 亚洲午夜精品在线观看 | 欧美一区成人 | 成年一级片| 在线视频精品播放 | 国产福利免费看 | 欧美国产日韩一区 | 久久精品2| 欧美另类高清 | 色婷婷 亚洲 | 成人久久18免费 | 国产成人免费网站 | 成年人精品 | 欧美日韩观看 | 热久精品 | 欧美成年性 | 成人黄性视频 | 国产色一区 | 国产一区二区在线免费播放 | 美女性爽视频国产免费app | 久久精品韩国 | 久久精品这里热有精品 | 亚洲国产精品电影 | 久草免费在线观看 | 国产99免费视频 | 国产在线不卡精品 | 黄色在线免费观看网址 | 国产手机视频在线 | 国产精品成人一区二区三区吃奶 | 亚洲精选国产 | 午夜精品久久久久久久爽 | av片在线看 | a级国产乱理论片在线观看 伊人宗合网 | 久久影院中文字幕 | 88av视频 | 国产精品一区在线观看你懂的 | 久久一区二区三区国产精品 | 91视频最新网址 | 日日躁夜夜躁xxxxaaaa | 五月综合激情网 | 久久亚洲影院 | 99视频在线观看一区三区 | 久久天天躁狠狠躁夜夜不卡公司 | 久久这里只有精品23 | 一级黄色片在线观看 | 日日夜夜网站 | 精品国产aⅴ一区二区三区 在线直播av | 成人免费视频视频在线观看 免费 | 91男人影院| 91九色蝌蚪视频 | 国产视频日本 | 人人干干人人 | 久久www免费人成看片高清 | www久久久 | 91精品视频播放 | 在线视频婷婷 | 天天干天天草天天爽 | 久久视频国产精品免费视频在线 | 久久免费毛片视频 | 在线亚洲免费视频 | 日韩欧美在线播放 | 亚洲女欲精品久久久久久久18 | 免费福利片2019潦草影视午夜 | 中文字幕在线观看的网站 | 国产视频欧美视频 | 四虎永久国产精品 | 最新日韩在线 | 午夜久久久久久久久久影院 | 成人在线观看免费 | 97色婷婷成人综合在线观看 | 中文字幕在线视频一区二区三区 | 国产在线观看91 | 中文久草 | 91高清不卡| 亚洲另类人人澡 | 久久情爱| 久在线观看视频 | 中文字幕第一页在线播放 | 日韩电影精品 | 国产一区二区在线免费 | h网站免费在线观看 | 久久精品欧美一区二区三区麻豆 | 亚洲精品国产成人av在线 | 日韩激情视频在线观看 | 日韩大片免费在线观看 | 日本精品视频网站 | 日韩国产在线观看 | 久久中文字幕视频 | 九七人人干 | 中文av在线播放 | 一区二区不卡在线观看 | 日韩欧美在线高清 | 免费在线播放黄色 | 国产欧美精品一区aⅴ影院 99视频国产精品免费观看 | 午夜av网站 | 黄色成人影视 | 亚洲欧美日韩国产一区二区 | 国产精品久久久久免费观看 | 中文字幕999| 国产精品自拍在线 | av一二三区 | 亚洲综合色丁香婷婷六月图片 | 久久av网 | 五月天综合在线 | 免费在线观看国产黄 | 天天操天天弄 | 国内视频在线 | 久一在线 | 91丨九色丨国产在线 | 亚洲精品国产品国语在线 | 久久精品麻豆 | 久久成人欧美 | 中文av在线免费观看 | 麻豆久久精品 | 久草在线这里只有精品 | 天天草天天干天天 | 精品国产视频在线 | 国产精品久久久久久久99 | 涩涩网站免费 | 激情综合网五月 | 免费观看国产精品视频 | 国产黄色精品在线 | 久久精品99久久久久久 | 成年人视频在线免费播放 | 免费高清在线视频一区· | 久久精品直播 | 久久综合影音 | 在线观看国产麻豆 | 国产精品一区二区精品视频免费看 | 精品国产自在精品国产精野外直播 | 久久免费国产 | 精油按摩av | 免费的黄色av | 天天射天天射天天射 | 国产尤物视频在线 | 日韩专区在线观看 | 黄色大片视频网站 | 日韩激情精品 | 99看视频在线观看 | 韩国精品一区二区三区六区色诱 | 91视频久久久久久 | 精品欧美乱码久久久久久 | 日韩在线激情 | 狂野欧美激情性xxxx欧美 | 国产精品久久久久久久免费观看 | 久久99国产精品久久99 | 天天射色综合 | 日本中文不卡 | 亚洲在线视频观看 | 亚洲综合激情 | 久久精彩 | 日韩免费在线视频观看 | 亚洲高清在线精品 | 亚洲精品国产成人 | 日日操天天爽 | www.国产精品 | av网址在线播放 | 国产一级二级在线观看 | 全黄网站 | 免费国产在线精品 | 伊人国产在线播放 | 日韩丝袜在线观看 | av免费福利 | 久久久五月婷婷 | 一本一道久久a久久精品蜜桃 | 欧美日韩精品在线观看视频 | 2019天天干天天色 | 三级动态视频在线观看 | 日韩精品观看 | 成人va天堂 | 麻豆传媒在线视频 | 日韩三级视频在线观看 | 国产美女久久久 | 中文字幕 在线 一 二 | www激情com | 麻豆成人网 | 欧洲精品亚洲精品 | 色婷婷97 | 人人爽人人乐 | 亚洲精品视频偷拍 | 亚洲91中文字幕无线码三区 | 制服丝袜天堂 | a级片在线播放 | 日本h在线播放 | 一区二区三区电影 | 国产精品私人影院 | 婷婷综合久久 | 久久精品成人热国产成 | 在线观看精品 | 96av视频| 一本之道乱码区 | 亚洲理论电影 | 五月天综合色 | 五月婷婷.com | 91精品国产高清 | 天天干天天玩天天操 | 久久国产精品99久久久久久老狼 | 日韩18p| 国产一区免费观看 | 韩国一区二区av | 亚洲国产精品第一区二区 | 国产一级在线观看视频 | 国语自产偷拍精品视频偷 | 深爱激情亚洲 | 成片免费观看视频大全 | 色婷婷狠 | 福利一区二区三区四区 | 国产一级做a |