任務(wù)計劃命令linux 查看計劃任務(wù)命令

Linux crontab命令

Linux crontab命令 被用來提交和管理用戶的需要周期性執(zhí)行的任務(wù),與windows下的計劃任務(wù)類似,當(dāng)安裝完成操作系統(tǒng)后,默認(rèn)會安裝此服務(wù)工具,并且會自動啟動crond進程,crond進程每分鐘會定期檢查是否有要執(zhí)行的任務(wù),如果有要執(zhí)行的任務(wù),則自動執(zhí)行該任務(wù)。

專注于為中小企業(yè)提供成都網(wǎng)站設(shè)計、網(wǎng)站建設(shè)服務(wù),電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業(yè)蕪湖免費做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了1000多家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實現(xiàn)規(guī)模擴充和轉(zhuǎn)變。

crontab文件:指定包含待執(zhí)行任務(wù)的crontab文件。

Linux下的任務(wù)調(diào)度分為兩類:系統(tǒng)任務(wù)調(diào)度和用戶任務(wù)調(diào)度。

系統(tǒng)任務(wù)調(diào)度:系統(tǒng)周期性所要執(zhí)行的工作,比如寫緩存數(shù)據(jù)到硬盤、日志清理等。在/etc目錄下有一個crontab文件,這個就是系統(tǒng)任務(wù)調(diào)度的配置文件。

/etc/crontab文件包括下面幾行:

前四行是用來配置crond任務(wù)運行的環(huán)境變量,第一行SHELL變量指定了系統(tǒng)要使用哪個shell,這里是bash,第二行PATH變量指定了系統(tǒng)執(zhí)行命令的路徑,第三行MAILTO變量指定了crond的任務(wù)執(zhí)行信息將通過電子郵件發(fā)送給root用戶,如果MAILTO變量的值為空,則表示不發(fā)送任務(wù)執(zhí)行信息給用戶,第四行的HOME變量指定了在執(zhí)行命令或者腳本時使用的主目錄。

用戶任務(wù)調(diào)度:用戶定期要執(zhí)行的工作,比如用戶數(shù)據(jù)備份、定時郵件提醒等。用戶可以使用 crontab 工具來定制自己的計劃任務(wù)。所有用戶定義的crontab文件都被保存在/var/spool/cron目錄中。其文件名與用戶名一致,使用者權(quán)限文件如下:

/etc/cron.deny 該文件中所列用戶不允許使用crontab命令

/etc/cron.allow 該文件中所列用戶允許使用crontab命令

/var/spool/cron/ 所有用戶crontab文件存放的目錄,以用戶名命名

crontab文件的含義:用戶所建立的crontab文件中,每一行都代表一項任務(wù),每行的每個字段代表一項設(shè)置,它的格式共分為六個字段,前五段是時間設(shè)定段,第六段是要執(zhí)行的命令段,格式如下:

minute hour day month week command 順序:分 時 日 月 周

其中:

在以上各個字段中,還可以使用以下特殊字符:

/sbin/service crond start //啟動服務(wù)

/sbin/service crond stop //關(guān)閉服務(wù)

/sbin/service crond restart //重啟服務(wù)

/sbin/service crond reload //重新載入配置

查看crontab服務(wù)狀態(tài):

service crond status

手動啟動crontab服務(wù):

service crond start

查看crontab服務(wù)是否已設(shè)置為開機啟動,執(zhí)行命令:

ntsysv

加入開機自動啟動:

chkconfig –level 35 crond on

每1分鐘執(zhí)行一次command

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

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

每隔兩天的上午8點到11點的第3和第15分鐘執(zhí)行

每個星期一的上午8點到11點的第3和第15分鐘執(zhí)行

每晚的21:30重啟smb

每月1、10、22日的4 : 45重啟smb

每周六、周日的1:10重啟smb

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

每星期六的晚上11:00 pm重啟smb

每一小時重啟smb

晚上11點到早上7點之間,每隔一小時重啟smb

每月的4號與每周一到周三的11點重啟smb

一月一號的4點重啟smb

每小時執(zhí)行/etc/cron.hourly目錄內(nèi)的腳本

Linux任務(wù)計劃和周期性任務(wù)執(zhí)行

常用選項:

-l 查看作業(yè)隊列,相當(dāng)于atq

-f 從某個指定文件文件中讀取作業(yè)任務(wù),不通過交互式輸入。

-d 刪除指定的作業(yè)任務(wù),相當(dāng)于atrm。

-c 查看指定作業(yè)具體內(nèi)容。

-q QUEUE指明隊列。

TIME時間格式有:

HH:MM 小時:分鐘 例如04:00

HH:MM YYYY-MM-DD 小時:分鐘 年-月-日 例如15:00 2017-11-25

HH:MM[am|pm] [Month] [Date] 例如:04pm July 30

HH:MM[am|pm] + number [minutes|hours|days|weeks]在某個時間點再加幾個時間后執(zhí)行

例如:now + 5minutes 5分鐘后執(zhí)行

04pm + days三天后下午4點執(zhí)行

[root@dxlcentOS ~]# at 15:55 2017-11-25 在15點55分執(zhí)行:切換到tmp目錄,執(zhí)行l(wèi)s命令

at cd /tmp

at ls

at EOT

job 3 at Sat Nov 25 15:55:00 2017

注意:輸入結(jié)束后按ctrl+d,任務(wù)輸入結(jié)束at EOT,執(zhí)行結(jié)果屏幕不會顯示,會以郵件形式發(fā)送到郵箱。要是沒有mail命令,進行yum -y install mailx安裝。

執(zhí)行周期性任務(wù)要確保crond守護進程在運行。

執(zhí)行pstree,要是crond運行起來可以看到。

或者執(zhí)行:~]# systemctl status crond (centos7)

Active: active (running) ... ...

centos6:~]# service crond status

... is running

有時候為了安全起見,可以將不允許某些用戶執(zhí)行周期性任務(wù)的用戶名添加到/etc/cron.deny文件里面即可。

cron任務(wù)分類:分系統(tǒng)cron任務(wù)和用戶cron任務(wù)

總結(jié):1.cron周期任務(wù)最小時間單位是分鐘。

2.定義COMMAND時,如果命令需要用到%,需要對其轉(zhuǎn)義;但放置于單引號中的%不用轉(zhuǎn)義亦可。

3.某任務(wù)在指定的時間因關(guān)機未能執(zhí)行,下次開機不會自動執(zhí)行。

4.當(dāng)修改之前定好的任務(wù)或新增循環(huán)任務(wù)時最好執(zhí)行一下systemctl restart crond。

5.如果是系統(tǒng)管理使用的循環(huán)任務(wù)最好寫入/etc/crontab。

6.避免系統(tǒng)資源分配不均,周與日月不可以同時并存。

cron循環(huán)任務(wù)設(shè)定后,要是服務(wù)器因意外關(guān)機,那么在停機期間,cron設(shè)定的循環(huán)任務(wù)是不會運行的,當(dāng)服務(wù)器開機后,也不會執(zhí)行過去到達(dá)時間點的循環(huán)任務(wù),只能等待下個時間點到來才執(zhí)行。要想重新執(zhí)行,anacron就可以解決這個問題。

anacron 是一個程序不是一個服務(wù),當(dāng)centos進入crontab排程時,anacron 會主動每一小時運行一次。

linux計劃任務(wù)管理

什么是計劃任務(wù),計劃任務(wù)類似于我們平時生活中的鬧鐘。

在Linux系統(tǒng)的計劃任務(wù)服務(wù)crond可以滿足周期性執(zhí)行任務(wù)的需求。

crond進程每分鐘會處理一次計劃任務(wù), 計劃任務(wù)主要是做一些周期性的任務(wù)目前最主要的用途是定時備份數(shù)據(jù)

Schedule one-time tasks with at. 一次性調(diào)度執(zhí)行 at

Schedule recurring jobs with cron. 循環(huán)調(diào)度執(zhí)行 cron

Schedule recurring system jobs. 所有計劃任務(wù)執(zhí)行中的輸出都會以郵件的方式發(fā)送給指定用戶, 除非重定向

// 循環(huán)調(diào)度執(zhí)行cron 進程每分鐘會處理一次計劃任務(wù)

[root@wangqing ~] # systemctl status crond

[root@wangqing ~] # ps aux |grep crond

root 1201 0.0 0.0 126264 1640 ? Ss 11 : 15 0 : 00 /usr/sbin/crond -n

計劃任務(wù)分為以下兩種情況:

系統(tǒng)級別的定時任務(wù):

清理系統(tǒng)緩存

臨時文件清理

系統(tǒng)信息采集

日志文件切割

用戶級別的定時任務(wù):

定時同步互聯(lián)網(wǎng)時間

定時備份系統(tǒng)配置文件

定時備份數(shù)據(jù)庫文件

文件 說明 /etc/crontab / /crontab配置文件 /etc/cron.deny / /該文件中所列用戶不允許使用crontab命令 /var/spool/cron/ * // 所有用戶定時文件都存放此目錄,文件以用戶名命名 /var/log/cron / /定時任務(wù)執(zhí)行后的日志文件,可用來回溯

crond任務(wù)管理

參數(shù) 含義 指定示例

[root@wangqing ~] # crontab --help -e 編輯crontab文件內(nèi)容 crontab -e-l 查看crontab文件內(nèi)容 crontab -l

-r 刪除crontab文件內(nèi)容 crontab -r

-u 管理其他用戶的計劃任務(wù) crontab -u wangqing -l

注意: crontab {-l -e}實際上就是在操作/var/spool/cron/username

//如何進行計劃任務(wù)的備份?

crond時間含義

# 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

// * 表示任意的(分、時、日、月、周)時間都執(zhí)行// - 表示一個時間范圍段, 如5-7點// , 表示分隔時段, 如6,0,4表示周六、日、四// */n 表示每隔n單位時間, 如*/10 每10分鐘

crond編寫示例

00 02 * * * command

00 02 1 * * command

00 02 14 2 * command

00 02 * * 7 command

00 02 * 6 5 command

00 02 14 * 7 command

00 02 14 2 7 command

00 02 * * * command* 02 * * * command* * * * * command* * 14 2 * command*/5 * * * * command

00 02 * 1,5,8 * command

00 02 1-8 * * command

crond書寫規(guī)范

//1.為計劃任務(wù)增加必要的注釋

[root@wangqing ~]# crontab -l

##time sync

* /5 * * * * /u sr/sbin/ntpdate time1.aliyun.com /dev/ null

//2.規(guī)范計劃任務(wù)執(zhí)行腳本存放的路徑/scripts/

[root@wangqing ~]# crontab -l

##backup www to /backup 30 01 * * * /bin/ sh /scripts/www_backup.sh /dev/ null

//3.執(zhí)行shell腳本任務(wù)前加/bin/sh, 腳本結(jié)尾加/dev/null//調(diào)試好后應(yīng)屏蔽debug輸出信息,避免產(chǎn)生系統(tǒng)垃圾占用過多inode, 如需輸出日志, 可重定向至日志文件

[root@wangqing ~]# crontab -l

####backup www to /backup 30 01 * * * /bin/ sh /scripts/www_backup.sh /tmp/ www_backup.log

[root@wangqing ~] # crontab -e

#每天凌晨切割nginx日志 05 00 * * * /bin/bash -x /scripts/cut_nginx.sh /scripts/ log /nginx. log

#每天5點備份數(shù)據(jù)庫 00 05 * * * /bin/bash -x /scripts/dump_sql.sh /scripts/ log /mysql. log

//注意: 1. 我們所有的crond服務(wù)是運行的程序。而crontab命令用戶用來設(shè)置定時規(guī)則的命令。 2. crond服務(wù)是企業(yè)生產(chǎn)工作中常用的重要服務(wù),at很少使用,可以忽略。 3. 幾乎每個服務(wù)器都會用到crond服務(wù)。

建議: 將需要定期執(zhí)行的任務(wù)寫入腳本中, 建立/scripts目錄統(tǒng)一存放腳本, 腳本中命令必須使用絕對路徑,手動執(zhí)行腳本檢測輸出是否正常, 然后將腳本加入計劃任務(wù)測試, 測試后無問題將腳本輸出寫入對應(yīng)的日志文件中即可。

計劃任務(wù)添加步驟:

作業(yè):

a. 00 13,20 * 1-5 * backup.sh

b. 0 13,20 1,5 * * backup.sh

c. * 13,20 * * 1-5 backup.sh

d. 00 13,20 * * 1-5 backup.sh

說明以上答案每一行是什么含義

2.新建/scripts/httpd.sh文件,并讓/scripts/httpd.sh腳本在每天的00:10分執(zhí)行

3.新建/backup目錄,每周一下午5:50將/backup目錄下的所有文件打包成 backup.tar.gz

4.寫一個定時任務(wù),每天0點5分把/var/log/nginx下7天前的文件轉(zhuǎn)移到/backup/2018_xx_xx的目錄中

5.系統(tǒng)腳本/scripts/which.sh,如何定時每隔7分鐘執(zhí)行一次?

6.如何不小心刪除了/var/spool/cron/root文件,該如何恢復(fù)。

/p3.toutiaoimg.com/origin/tos-cn-i-qvj2lq49k0/49da2da0342544a6a4c02f2aa442d537","uri":"","width":323,"height":27,"darkImgUrl":"","darkImgUri":"","formulaImgStatus":"succeed"}" class="syl-plugin-formula"

網(wǎng)站標(biāo)題:任務(wù)計劃命令linux 查看計劃任務(wù)命令
網(wǎng)址分享:http://www.muchs.cn/article0/hjeeoo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信公眾號、、網(wǎng)站收錄、靜態(tài)網(wǎng)站、域名注冊、網(wǎng)站設(shè)計公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都做網(wǎng)站