国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
crontab的使用
crontab的使用
2007-05-29 12:11
使用者的設(shè)定: crontab
使用者想要建立例行性命令時,使用的是 crontab 這個指令啦~不過,為了安全性的問題, 與 at 同樣的,我們可以限制使用 crontab 的使用者帳號喔!使用的限制資料有:
  • /etc/cron.allow
    將可以使用 crontab 的帳號寫入其中,若不在這個檔案內(nèi)的使用者則不可使用 crontab;
  • /etc/cron.deny
    將不可以使用 crontab 的帳號寫入其中,若未記錄到這個檔案當中的使用者,就可以使用 crontab 。
與 at 很像吧!同樣的,以優(yōu)先順序來說, /etc/cron.allow 比 /etc/cron.deny 要優(yōu)先, 而判斷上面,這兩個檔案只選擇一個來限制而已,因此,建議您只要保留一個即可, 免得影響自己在設(shè)定上面的判斷!一般來說,系統(tǒng)預(yù)設(shè)是保留 /etc/cron.deny , 您可以將不想讓他執(zhí)行 crontab 的那個使用者寫入 /etc/cron.deny 當中,一個帳號一行!

當使用者使用 crontab 這個指令來建立工作排程之後,該項工作就會被紀錄到 /var/spool/cron/ 裡面去了,而且是以帳號來作為判別的喔!舉例來說, dmtsai 使用 crontab 後, 他的工作會被紀錄到 /var/spool/cron/dmtsai 裡頭去!但請注意,不要使用 vi 直接編輯該檔案, 因為可能由於輸入語法錯誤,會導(dǎo)致無法執(zhí)行 cron 喔!另外, cron 執(zhí)行的每一項工作都會被紀錄到 /var/log/cron 這個登錄檔中,所以囉,如果您的 Linux 不知道有否被植入木馬時, 也可以搜尋一下 /var/log/cron 這個登錄檔呢!

好了,那麼我們就來聊一聊 crontab 的語法吧!
[root@linux ~]# crontab [-u username] [-l|-e|-r]
參數(shù):
-u :只有 root 才能進行這個任務(wù),亦即幫其他使用者建立/移除 crontab;
-e :編輯 crontab 的工作內(nèi)容
-l :查閱 crontab 的工作內(nèi)容
-r :移除 crontab 的工作內(nèi)容
範例:


範例一:用 dmtsai 在每天的 12:00 發(fā)信給自己
[dmtsai@linux ~]$ crontab -e
# 此時會進入 vi 的編輯畫面讓您編輯工作!注意到,每項工作都是一行。
0 12 * * * mail dmtsai -s "at 12:00" < /home/dmtsai/.bashrc
#分 時 日 月 週 |<==============指令串========================>|
任何使用者只要不被列入 /etc/cron.deny 當中,那麼他就可以直接下達『 crontab -e 』去編輯自己的例行性命令了!整個過程就如同上面提到的,會進入 vi 的編輯畫面, 然後以一個工作一行來編輯,編輯完畢之後,輸入『 :wq 』儲存後離開 vi 就可以了! 而每項工作的格式都是『 五個時間參數(shù) 實際動作指令 』,那麼那五個時間參數(shù)代表什麼呢?

代表意義 分鐘 小時 日期 月份
數(shù)字範圍 0-59 0-23 1-31 1-12 0-7

比較有趣的是那個『週』喔!當週為 0 或 7 時,都代表『星期天』的意思!另外, 還有一些輔助的字符,大概有底下這些:

特殊字符 代表意義
* 代表任何時刻都接受的意思!舉例來說,上表的範例一,那個日、月、週都是 * , 就代表著『不論何月、何日的禮拜幾的 12:00 都執(zhí)行後續(xù)指令』的意思!
, 代表分隔時段的意思。舉例來說,如果要下達的工作是 3:00 與 6:00 時,就會是:
    0 3,6 * * * command
還是有五欄,不過第二欄是 3,6 ,代表 3 與 6 都適用!
- 代表一段時間範圍內(nèi),舉例來說, 8 點到 12 點之間的每小時的 20 分都進行一項工作:
    20 8-12 * * * command
仔細看到第二欄變成 8-12 喔!代表 8,9,10,11,12 都適用的意思!
/n 那個 n 代表數(shù)字,亦即是『每隔 n 單位間隔』的意思,例如每五分鐘進行一次,則:
    */5 * * * * command
很簡單吧!用 * 與 /5 來搭配,也可以寫成 0-59/5 ,相同意思!

我們就來搭配幾個例子練習看看吧!

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

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

那個 crontab 每個人都只有一個檔案存在,就是在 /var/spool/cron 裡面??! 還有建議您:『指令下達時,最好使用絕對路徑,這樣比較不會找不到執(zhí)行檔喔!』
例題:假如你每星期六都與朋友有約,那麼想要每個星期五下午 4:30 告訴你朋友星期六的約會不要忘記,則:
答:
    還是使用 crontab -e ?。?
      30 16 * * 5 mail friend@his.server.name < /home/dmtsai/friend.txt

真的是很簡單吧!呵呵!那麼,該如何查詢使用者目前的 crontab 內(nèi)容呢? 我們可以這樣來看看:
[dmtsai@linux ~]$ 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

# 注意,若僅想要移除一項工作而已的話,必須要用 crontab -e 去編輯~
# 如果想要全部的工作都移除,才使用 crontab -r 喔!

[dmtsai@linux ~]$ crontab -r
[dmtsai@linux ~]$ crontab -l
no crontab for dmtsai
看到了嗎? crontab 『整個內(nèi)容都不見了!』所以請注意:『如果只是要刪除某個 crontab 的工作項目,那麼請使用 crontab -e 來重新編輯即可!』如果使用 -r 的參數(shù),是會將所有的 crontab 資料內(nèi)容都刪掉的!千萬注意了!


系統(tǒng)的設(shè)定: /etc/crontab
這個『 crontab -e 』是針對使用者的 cron 來設(shè)計的,如果是『系統(tǒng)的例行性任務(wù)』時, 該怎麼辦呢?是否還是需要以 crontab -e 來管理你的例行性命令呢?當然不需要,你只要編輯 /etc/crontab這個檔案就可以啦!有一點需要特別注意喔!那就是 crontab -e 這個 crontab 其實是 /usr/bin/crontab 這個執(zhí)行檔,但是 /etc/crontab 可是一個『純文字檔』喔!你可以 root 的身份編輯一下這個檔案哩!

基本上, cron 這個服務(wù)的最低偵測限制是『分鐘』,所以『 cron 會每分鐘去讀取一次 /etc/crontab 與 /var/spool/cron 裡面的資料內(nèi)容 』,因此,只要你編輯完 /etc/crontab 這個檔案,並且將他儲存之後,呵呵!那麼 cron 的設(shè)定就自動的會來執(zhí)行了!
Tips:
在 Linux 底下的 crontab 會自動的幫我們每分鐘重新讀取一次 /etc/crontab 的例行工作事項,但是某些原因或者是其他的 Unix 系統(tǒng)中,由於 crontab 是讀到記憶體當中的,所以在你修改完 /etc/crontab 之後,可能並不會馬上執(zhí)行, 這個時候請重新啟動 crond 這個服務(wù)吧!
    /etc/init.d/crond restart
好了,我們就來看一下這個 /etc/crontab 的內(nèi)容吧!
[root@linux ~]# cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

# run-parts
01 * * * * root run-parts /etc/cron.hourly <==每小時
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 <==每個月 1 號
分 時 日 月 週 執(zhí)行者身份 指令串
看到這個檔案的內(nèi)容你大概就瞭解了吧!呵呵,沒錯!這個檔案與將剛剛我們下達 crontab -e 的內(nèi)容幾乎完全一模一樣!只是有幾個地方不太相同:
  • MAILTO=root
    這個項目是說,當 /etc/crontab 這個檔案中的例行性命令發(fā)生錯誤時,或者是該執(zhí)行結(jié)果有 STDOUT/STDERR 時, 會將錯誤訊息或者是螢?zāi)伙@示的訊息傳給誰?預(yù)設(shè)當然是由系統(tǒng)直接寄發(fā)一封 mail 給 root 啦!不過, 由於 root 並無法在用戶端中以 POP3 之類的軟體收信,因此,我通常都將這個 e-mail 改成自己的帳號,好讓我隨時瞭解系統(tǒng)的狀況!例如: MAILTO=dmtsai@my.host.name
  • PATH=....
    還記得我們在 BASH Shell 當中一直提到的執(zhí)行檔路徑問題吧!沒錯啦!這裡就是輸入執(zhí)行檔的搜尋路徑! 使用預(yù)設(shè)的路徑設(shè)定就已經(jīng)很足夠了!
  • 01 * * * * root run-parts /etc/cron.hourly
    在註解符號『 #run-parts 』這一行以後的命令,我們可以發(fā)現(xiàn),五個數(shù)字後面接的是 root 喔!沒錯,與 crontab -e 的內(nèi)容是不太一樣的!這個欄位的 root 代表的是『 執(zhí)行的使用者身份為 root 』當然囉,你 也可以將這一行改寫成其他的身份哩!而 run-parts 代表後面接的 /etc/cron.hourly 是『 一個目錄內(nèi)(/etc/cron.hourly)的所有可執(zhí)行檔 』,這也就是說,每個小時的 01 分,系統(tǒng)會以 root 的身份去 /etc/cron.hourly/ 這個目錄下執(zhí)行所有可以執(zhí)行的檔案!後面的三行也都是類似的意思!你可以到 /etc/ 底下去看看,系統(tǒng)本來就預(yù)設(shè)了這四個目錄了!你可以將每天需要執(zhí)行的命令直接寫到 /etc/cron.daily/ 即可,還不需要使用到 crontab -e 的程式呢!方便吧!
基本上, /etc/crontab 這個檔案裡面支援兩種下達指令的方式,一種是直接下達指令, 一種則是以目錄來規(guī)劃,例如:
  • 指令型態(tài)
    01 * * * * dmtsai mail -s "testing" kiki < /home/dmtsai/test.txt
    以 dmtsai 這個使用者的身份,在每小時執(zhí)行一次 mail 指令。
  • 目錄規(guī)劃
    */5 * * * * root run-parts /root/runcron
    建立一個 /root/runcron 的目錄,將要每隔五分鐘執(zhí)行的『可執(zhí)行檔』都寫到該目錄下, 就可以讓系統(tǒng)每五分鐘執(zhí)行一次該目錄下的所有可執(zhí)行檔。
這樣就可以曉得 run-parts 的用意了吧!此外,與 crontab -e 規(guī)劃當中最不相同的就是多了一個『使用者層級』的概念,通常我們都是以 root 的角度來規(guī)劃例行性命令,但是總有不需要 root 的指令吧!就可以使用這個層級來規(guī)範該程序的使用者屬於誰囉!

好!你現(xiàn)在大概瞭解了這一個咚咚吧!OK!假設(shè)你現(xiàn)在要作一個目錄,讓系統(tǒng)可以每 2 分鐘去執(zhí)行這個目錄下的所有可以執(zhí)行的檔案,你可以寫下如下的這一行在 /etc/crontab 中:
    */2 * * * * root run-parts /etc/cron.min
當然囉, /etc/cron.min 這個目錄是需要存在的喔!那如果我需要執(zhí)行的是一個『程式』而已, 不需要用到一個目錄呢?該如何是好?例如在偵測網(wǎng)路流量時,我們希望每五分鐘偵測分析一次, 可以這樣寫:
    */5 * * * * root /bin/mrtg /etc/mrtg/mrtg.cfg
沒有了 run-parts 就是代表『一個檔案』的意思啦!

如何???建立例行性命令很簡單吧!如果你是系統(tǒng)管理員的話,直接修改 /etc/crontab 這個檔案即可喔!又便利,又方便管理呢!

一些使用特點:
有的時候,我們以系統(tǒng)的 cron 來進行例行性工作的建立時,要注意一些使用方面的特性。 舉例來說,如果我們有四個工作都是五分鐘要進行一次的,那麼是否這四個動作全部都在同一個時間點進行? 如果同時進行,該四個動作又很耗系統(tǒng)資源,如此一來,每五分鐘不是會讓系統(tǒng)忙得要死? 呵呵!此時好好的分配一些執(zhí)行時間,呵呵!就 OK 啦!所以,注意一下:

  • 資源分配不均的問題
    當大量使用 crontab 的時候,總是會有問題發(fā)生的,最嚴重的問題就是『系統(tǒng)資源分配不均』的問題, 以鳥哥的系統(tǒng)為例,我有偵測流量的資訊,包括:
    • 流量
    • 區(qū)域內(nèi)其他 PC 的流量偵測
    • CPU 使用率
    • RAM 使用率
    • 線上人數(shù)即時偵測
    如果每個流程都在同一個時間啟動的話,呵呵!那麼在某個時段時,我的系統(tǒng)會變的相當?shù)姆泵Γ?所以,這個時候就必須要分別設(shè)定啦!我可以這樣做:
    [root@linux ~]# 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
    看到了沒?那個『 , 』分隔的時候,請注意,不要有空白字元?。ㄟB續(xù)的意思)如此一來, 則可以將每五分鐘工作的流程分別在不同的時刻來工作!則可以讓系統(tǒng)的執(zhí)行較為順暢呦!

  • 取消不要的輸出項目
    另外一個困擾發(fā)生在『 當有執(zhí)行成果或者是執(zhí)行的項目中有輸出的資料時,該資料將會 mail 給 MAILTO 設(shè)定的帳號 』,好啦,那麼當有一個排程一直出錯(例如 DNS 的偵測系統(tǒng)當中,若 DNS 上層主機掛掉,那麼你就會一直收到錯誤訊息!)怎麼辦?呵呵!還記得 BASH 與 Shell scripts 那一章吧???直接以『命令重導(dǎo)向』將輸出的結(jié)果輸出到 /dev/null 這個垃圾桶當中就好了!

  • 安全的檢驗
    很多時候被植入木馬都是以例行命令的方式植入的,所以可以藉由檢查 /var/log/cron 的內(nèi)容來視察是否有『非您設(shè)定的 cron 被執(zhí)行了?』這個時候就需要小心一點囉!
  • 本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
    打開APP,閱讀全文并永久保存 查看更多類似文章
    猜你喜歡
    類似文章
    Linux基礎(chǔ)學(xué)習4
    定時任務(wù) Crontab命令 詳解
    linux 普通用戶成為sudoer(轉(zhuǎn))
    linux crontab 文件位置和日志位置
    定時計劃任務(wù)cron使用_游戲運維 我想我是海
    crontab介紹 + 小示例 + crontab不執(zhí)行的原因
    更多類似文章 >>
    生活服務(wù)
    分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
    綁定賬號成功
    后續(xù)可登錄賬號暢享VIP特權(quán)!
    如果VIP功能使用有故障,
    可點擊這里聯(lián)系客服!

    聯(lián)系客服