欧美成人午夜免费全部完,亚洲午夜福利精品久久,а√最新版在线天堂,另类亚洲综合区图片小说区,亚洲欧美日韩精品色xxx

扣丁學(xué)堂Linux培訓(xùn)簡(jiǎn)述如何在Linux上定期定期執(zhí)行命令、腳本(cron、crontab、anacron)

2019-03-28 10:24:01 2729瀏覽

在Linux上定期定期執(zhí)行命令雖然不常使用,但是偶爾也是會(huì)用到的,如果想要在未來(lái)的某個(gè)時(shí)刻執(zhí)行某個(gè)任務(wù),并且在未來(lái)的每一個(gè)這樣的時(shí)刻里都要執(zhí)行這個(gè)任務(wù)的話,那么本篇文章正好可以幫到你,本篇文章扣丁學(xué)堂Linux培訓(xùn)小編主要給讀者們介紹一下Linux上定期執(zhí)行命令、腳本(cron,crontab,anacron)的相關(guān)知識(shí),希望對(duì)小伙伴們有幫助。


扣丁學(xué)堂Linux培訓(xùn)簡(jiǎn)述如何在Linux上定期定期執(zhí)行命令、腳本(cron、crontab、anacron)


在Linux下,如果想要在未來(lái)的某個(gè)時(shí)刻執(zhí)行某個(gè)任務(wù),并且在未來(lái)的每一個(gè)這樣的時(shí)刻里都要執(zhí)行這個(gè)任務(wù),舉個(gè)簡(jiǎn)單的例子,比如說(shuō)想要在將來(lái),每天的十二點(diǎn)都重啟路由器,大多數(shù)發(fā)行版都自帶一個(gè)守護(hù)進(jìn)程(daemon)cron來(lái)完成這項(xiàng)工作。



1、cron,crontab以及anacron的關(guān)系


cron是大多數(shù)linux發(fā)行版都自帶的守護(hù)進(jìn)程(daemon),用來(lái)重復(fù)運(yùn)行某些被設(shè)定好了確定的運(yùn)行時(shí)間的任務(wù),這些任務(wù)可以是每個(gè)月運(yùn)行、每周運(yùn)行、每天運(yùn)行,甚至是每一分鐘運(yùn)行。用cron執(zhí)行的任務(wù)適合于24小時(shí)運(yùn)行的機(jī)器,cron執(zhí)行的任務(wù)會(huì)在設(shè)定好的時(shí)刻執(zhí)行,當(dāng)機(jī)器處于關(guān)機(jī)狀態(tài)下并錯(cuò)過(guò)了任務(wù)執(zhí)行的時(shí)間,cron任務(wù)就無(wú)法預(yù)期執(zhí)行了。


crontab(cron table的簡(jiǎn)稱)既可以指cron用來(lái)定期執(zhí)行特定任務(wù)所需要的列表文件,又可以指用來(lái)創(chuàng)建、刪除、查看當(dāng)前用戶(或者指定用戶)的crontab文件的命令。


anacron不是守護(hù)進(jìn)程,可以看做是cron守護(hù)進(jìn)程的某種補(bǔ)充程序,anacron是獨(dú)立的linux程序,被cron守護(hù)進(jìn)程或者其他開(kāi)機(jī)腳本啟動(dòng)運(yùn)行,可以每天、每周、每個(gè)月周期性地執(zhí)行一項(xiàng)任務(wù)(最小單位為天)。適合于可能經(jīng)常會(huì)關(guān)機(jī)的機(jī)器,當(dāng)機(jī)器重新開(kāi)機(jī)anacron程序啟動(dòng)之后,anacron會(huì)檢查anacron任務(wù)是否在合適的周期執(zhí)行了,如果未執(zhí)行則在anacron設(shè)定好的延遲時(shí)間之后只執(zhí)行一次任務(wù),而不管任務(wù)錯(cuò)過(guò)了幾次周期。舉個(gè)例子,比如你設(shè)定了一個(gè)每周備份文件的任務(wù),但是你的電腦因?yàn)槟阃獬龆燃俣幱陉P(guān)機(jī)狀態(tài)四周,當(dāng)你回到家中開(kāi)機(jī)后,anacron會(huì)在延遲一定時(shí)間之后只備份一次文件。由于發(fā)行版的不同,cron守護(hù)進(jìn)程如何運(yùn)行anacron會(huì)有所不同。



2、crontab命令,crontab文件語(yǔ)法


系統(tǒng)默認(rèn)crontab文件為/etc/crontab,以及/etc/cron.d/目錄下的文件,有些程序會(huì)把自己的crontab文件放在/etc/cron.d/目錄下。要修改/etc/crontab以及/etc/cron.d/目錄下的文件需要root權(quán)限。cron守護(hù)進(jìn)程會(huì)檢查/etc/crontab以及/etc/cron.d/目錄下的文件,根據(jù)這些文件中的cron任務(wù)所設(shè)置的執(zhí)行時(shí)間決定是否執(zhí)行任務(wù),如果當(dāng)前時(shí)間與cron任務(wù)所設(shè)置的執(zhí)行時(shí)間相同,則執(zhí)行任務(wù)。


每個(gè)用戶自己的crontab文件都會(huì)被放在 /var/spool/cron目錄下,默認(rèn)為空,可以使用crontab命令創(chuàng)建。cron守護(hù)進(jìn)程會(huì)檢查/var/spool/cron目錄下的文件,根據(jù)這些文件中的cron任務(wù)所設(shè)置的執(zhí)行時(shí)間決定是否執(zhí)行任務(wù),如果當(dāng)前時(shí)間與cron任務(wù)所設(shè)置的執(zhí)行時(shí)間相同,則執(zhí)行任務(wù)。


當(dāng)cron的配置文件發(fā)生改變時(shí),不需要重置cron守護(hù)進(jìn)程。cron守護(hù)進(jìn)程會(huì)檢查配置文件的變化。


創(chuàng)建自己的crontab之前,首先要設(shè)置環(huán)境變量EDITOR,cron進(jìn)程根據(jù)它來(lái)確定使用哪個(gè)編輯器編輯crontab文件。在home目錄下的.bashrc或者.profile里加入一行


#你也可以使用自己喜愛(ài)的其他終端編輯器
EDITOR=vim; export EDITOR



2.1、crontab命令參數(shù)及使用示例



usage: crontab [-u user] file
crontab [ -u user ] [ -i ] { -e | -l | -r }
-e (edit user's crontab)
-l (list user's crontab)
-r (delete user's crontab)
-i (prompt before deleting user's crontab)



創(chuàng)建并編輯當(dāng)前用戶的crontab


crontab -e


列出當(dāng)前用戶的crontab


crontab -l


刪除用戶linus的crontab


crontab -u linus -i -r



2.2、crontab文件語(yǔ)法詳解及示例


當(dāng)用 crontab -e 編輯當(dāng)前用戶的crontab文件時(shí),首先寫入以下內(nèi)容。



# crontab -e
SHELL=/bin/bash
MAILTO=root@example.com
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
# For details see man 4 crontabs
# 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



該文件的前三行代碼設(shè)置了默認(rèn)環(huán)境。cron守護(hù)進(jìn)程并不提供任何環(huán)境。SHELL變量設(shè)置當(dāng)cron任務(wù)(命令以及腳本)運(yùn)行時(shí)的shell,MAILTO變量設(shè)置cron任務(wù)執(zhí)行結(jié)果發(fā)送的郵箱,PATH設(shè)置去哪些目錄下尋找cron任務(wù)的命令。注釋部分則解釋一條cron任務(wù)的構(gòu)成,一條cron任務(wù)就是一行,要設(shè)置多少條cron任務(wù)則寫多少行。一條cron任務(wù)由七個(gè)部分組成,從左到右依次為:


分鐘(0-59)

小時(shí)(0-23)

天(1-31)

月 (1-12):或者可以使用月份的英文單詞的前三個(gè)字母,比如jan,feb,mar,apr...

星期(0-6):星期天用0或者7都可以,或者可以使用星期的英文單詞的前三個(gè)字母,比如sun,mon,tue,wed,thu,fri,sat

用戶名稱(可以省略)

要執(zhí)行的命令或者腳本目錄


前五個(gè)部分的編寫注意特殊符號(hào)的含義:

如果你想匹配取值范圍內(nèi)的所有值,使用“*”

想匹配某些特殊的值,使用“,”,比如2,4,7就匹配的是2,4以及7。

兩個(gè)值被“-”連接表示范圍,此時(shí)匹配的是范圍內(nèi)所有值,包含“-”兩邊的值,比如4-7匹配的就是從4到7。

想要表達(dá)每隔一段時(shí)間執(zhí)行一次任務(wù),使用 “/”, 比如分鐘部分中的 “*/10”表示每10分鐘運(yùn)行一次,比如小時(shí)部分中的“10-22/2”則表示在早上10點(diǎn)到晚上10點(diǎn)這段時(shí)間內(nèi),每隔兩個(gè)小時(shí)運(yùn)行一次。 注意 :當(dāng)“/”左邊的值可以除盡“/”右邊的值時(shí),任務(wù)才會(huì)運(yùn)行。



例子1:

每天凌晨執(zhí)行

0 0 * * * root command



例子2:

每周星期天早上五點(diǎn)執(zhí)行

0 5 * * sun root command



例子3:

每個(gè)月的前10天晚上10點(diǎn)開(kāi)始每隔10分鐘執(zhí)行一次命令

*/10 22 1-10 * * root command



例子4:

從星期一到五,每個(gè)小時(shí)的第10分鐘、第20分鐘以及第30分鐘都執(zhí)行一次命令

10,20,30 * * * 1-5 root command



例子5:

從早上10點(diǎn)到晚上10點(diǎn),每個(gè)偶數(shù)的小時(shí)(比如10點(diǎn),12點(diǎn))里每五分鐘運(yùn)行一次命令

*/5 10-22/2 * * * root command



特殊簡(jiǎn)便寫法:

@hourly 代表 0 * * * * ,每個(gè)小時(shí)運(yùn)行一次

@daily 代表 0 0 * * * ,每天凌晨運(yùn)行一次

@weekly 代表 0 0 * * 0 ,每周星期天凌晨運(yùn)行一次

@monthly 代表 0 0 1 * * ,每個(gè)月第一天凌晨運(yùn)行一次

@yearly 代表 0 0 1 1 * ,每年的頭一分鐘運(yùn)行一次

@reboot 重啟后執(zhí)行一次



例子:

每天凌晨運(yùn)行一次

@daily command

你可以把需要每個(gè)小時(shí)運(yùn)行一次的腳本放到/etc/cron.hourly目錄下,cron守護(hù)進(jìn)程會(huì)每個(gè)小時(shí)都運(yùn)行一次。



2.3、限制可以使用cron的用戶


在/etc/目錄下,可能默認(rèn)會(huì)有cron.allow以及cron.deny文件,也可能沒(méi)有,沒(méi)有的情況下可以自己創(chuàng)建,cron.allow文件包含了可以使用cron的用戶名,cron.deny文件包含了不可以使用cron的用戶名。兩個(gè)文件中每個(gè)用戶名占一行,并且不允許出現(xiàn)空格。


root用戶在任何情況下都可以使用cron。


假如cron.allow存在,則只有列在這個(gè)文件中的用戶名可以使用cron,這時(shí)候cron.deny被忽視。


假如cron.allow不存在,則列在cron.deny文件中的用戶名不可以使用cron。



3、用anacron執(zhí)行周期性的任務(wù)


anacron程序可以周期性的執(zhí)行任務(wù),但具體執(zhí)行時(shí)間并不確定??梢悦刻臁⒚恐?、每個(gè)月周期性的執(zhí)行任務(wù)。當(dāng)anacron的配置文件發(fā)生改變時(shí),下一次anacron運(yùn)行時(shí)會(huì)檢查到配置文件的變化。anacron的配置文件為/etc/anacrontab,編輯需要root權(quán)限,默認(rèn)以下內(nèi)容:



# See anacron(8) and anacrontab(5) for details.
SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# the maximal random delay added to the base delay of the jobs
RANDOM_DELAY=45
# the jobs will be started during the following hours only
START_HOURS_RANGE=3-22
#period in days delay in minutes job-identifier command
1 5 cron.daily nice run-parts /etc/cron.daily
7 25 cron.weekly nice run-parts /etc/cron.weekly
@monthly 45 cron.monthly nice run-parts /etc/cron.monthly



可以看到前三行設(shè)置了默認(rèn)環(huán)境,RANDOM_DELAY變量設(shè)置了最大延遲執(zhí)行時(shí)間,START_HOURS_RANGE變量設(shè)置了anacron任務(wù)執(zhí)行的時(shí)間范圍,默認(rèn)在每天的3點(diǎn)到22點(diǎn)之間。最后三行則設(shè)置了三條默認(rèn)的anacron任務(wù),分別是每天執(zhí)行,每周執(zhí)行,每月執(zhí)行。



3.1、anacron文件語(yǔ)法


觀察前面三條默認(rèn)的anacron任務(wù),可以看到一條anacron任務(wù)分為四個(gè)部分,從左到右依次為:


周期(天):設(shè)置任務(wù)執(zhí)行的頻率,以 天數(shù) 為單位,寫1則代表每天執(zhí)行,寫3則代表每3天執(zhí)行,可以使用特殊符號(hào)“@”, @daily 代表每天, @weekly 代表每周, @monthly 代表每月。

延遲時(shí)間:設(shè)置任務(wù)的延遲時(shí)間,以 分鐘 為單位,比如寫5,則當(dāng)anacron啟動(dòng)后,anacron等待5分鐘就會(huì)執(zhí)行該任務(wù)。設(shè)置延遲時(shí)間是為了當(dāng)機(jī)器啟動(dòng)時(shí)不會(huì)因?yàn)閳?zhí)行很多anacron任務(wù)而過(guò)載。

任務(wù)標(biāo)識(shí):其目的是識(shí)別消息,日志文件和執(zhí)行特殊操作。

要執(zhí)行的命令


在/etc/anacrontab中的三條默認(rèn)anacron任務(wù)中,nice命令用來(lái)調(diào)整后面命令的優(yōu)先級(jí),run-parts命令用來(lái)執(zhí)行設(shè)置的目錄下的所有腳本,就是說(shuō)這三條任務(wù)分別每天,每周,每月執(zhí)行/etc/cron.daily,/etc/cron.weekly,/etc/cron.monthly目錄下的腳本。所以我們不用自己往/etc/anacrontab中添加anacrontab任務(wù),而只需把腳本放到相應(yīng)的目錄下,anacron就會(huì)周期性的執(zhí)行這些腳本了。



3.2、anacron如何運(yùn)行


既然anacron不是守護(hù)進(jìn)程,那它是如何做到周期性執(zhí)行任務(wù)的呢?在centos7下,cron會(huì)運(yùn)行/etc/cron.d/0hourly,在/etc/cron.d/0hourly文件里,有一條cron任務(wù)是這樣的:


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


這條cron任務(wù)會(huì)運(yùn)行/etc/cron.hourly目錄下的所有腳本,其中有一個(gè)名為 0anacron 的腳本,該腳本則會(huì)在合適的時(shí)間運(yùn)行anacron,anacron則會(huì)檢查/etc/anacrontab,在合適的時(shí)間分別運(yùn)行/etc/cron.daily,/etc/cron.weekly,/etc/cron.monthly目錄下的腳本。



最后想要了解更多內(nèi)容的小伙伴可以登錄扣丁學(xué)堂官網(wǎng)咨詢,扣丁學(xué)堂有專業(yè)老師制定的Linux學(xué)習(xí)路線圖輔助學(xué)員學(xué)習(xí),此外還有與時(shí)俱進(jìn)的Linux視頻教程供大家學(xué)習(xí),想要學(xué)好Linux開(kāi)發(fā)技術(shù)的同學(xué)請(qǐng)加入扣丁學(xué)堂Linux技術(shù)交流群:422345477。


扣丁學(xué)堂微信公眾號(hào)                                 HTML5前端開(kāi)發(fā)VIP免費(fèi)公開(kāi)課

     【關(guān)注微信公眾號(hào)獲取更多學(xué)習(xí)資料】           【掃碼進(jìn)入HTML5前端開(kāi)發(fā)VIP免費(fèi)公開(kāi)課



查看更多關(guān)于“Linux培訓(xùn)資訊”的相關(guān)文章>>



標(biāo)簽: linux系統(tǒng)入門學(xué)習(xí) linux培訓(xùn) linux視頻教程 linux基礎(chǔ)教程 linux在線視頻 linux在線學(xué)習(xí) linux從入門到精通 linux開(kāi)發(fā)環(huán)境包 linux系統(tǒng) linux開(kāi)發(fā)教程

熱門專區(qū)

暫無(wú)熱門資訊

課程推薦

微信
微博
15311698296

全國(guó)免費(fèi)咨詢熱線

郵箱:codingke@1000phone.com

官方群:148715490

北京千鋒互聯(lián)科技有限公司版權(quán)所有   北京市海淀區(qū)寶盛北里西區(qū)28號(hào)中關(guān)村智誠(chéng)科創(chuàng)大廈4層
京ICP備2021002079號(hào)-2   Copyright ? 2017 - 2022
返回頂部 返回頂部