【转载】RHEL系统crontab计划任务管理
在Linux操作系統中,除了用戶即時執行的命令操作以外,還可以配置在指定的時間、指定的日期執行預先計劃好的系統管理任務。在RHEL、CentOS等大多數Linux系統中,默認已經安裝了at、cron軟件包,通過atd和crond這兩個系統服務實現一次性和周期性計劃任務的功能。其結合shell腳本,可以實現系統自動化管理.
1.at一次性任務設置:使用at命令設置的計劃任務只在指定的時間點執行一次,有一個前提條件是,對應的系統服務atd必須已經運行。 /etc/init.d/atd
設置格式:at? [HH:MM]? [yyyy-mm-dd]
使用at命令設置計劃任務時,在命令行中依次指定計劃執行任務的時間、日期作為參數,確認后將進入帶at>提示符的任務編輯界面,每行設置一條命令,可以依次設置多條命令,最后按ctrl+D提交任務即可。所設置的命令操作將在計劃的時間點被依次執行。
需要注意的是,計劃執行任務的時間、日期必須確保在當前系統的時刻之后,否則將無法正確設置計劃任務。
例如:使用date命令確認當前的系統時間,并設置在系統時間之后自動執行一下計劃任務:統計該時間點系統中由root用戶運行的進程的數量,并將該數量值保存到/tmp/ps.root文件中。
[root@localhost /]# at 21:30 2011-12-16
at> pgrep -U root | wc -l > /tmp/ps.root
at> <EOT>???????????????????????? //任務設置完畢后按ctrl+d組合鍵提交
job 1 at 2011-12-16 21:30
例如:設置在當前24:00時自動關閉當前系統
[root@localhost /]# at 24:00
at> shutdown -h now
at> <EOT>
job 2 at 2011-12-16 00:00
對于已經設置但還尚未執行(未到時間點)的計劃任務,可以通過atq命令進行查詢。已執行過的at任務將不會再出現在列表中。
例如:查詢當前系統中設置的at計劃任務列表
[root@localhost /]# atq
1?????? 2011-12-16 21:30 a root
2?????? 2011-12-16 00:00 a root
使用atrm命令可以刪除指定任務編號的at任務,刪除后的at任務將不會被執行,并且不會顯示在atq命令的顯示結果中。已經執行過的任務無法刪除。
例如:刪除計劃于24:00分執行的關機任務
[root@localhost /]# atq
1?????? 2011-12-16 21:30 a root
2?????? 2011-12-16 00:00 a root
[root@localhost /]# atrm 2
[root@localhost /]# atq
1?????? 2011-12-16 21:30 a root
2.crontab周期性任務設置
使用crontab命令設置的計劃任務可以按預設的周期重復執行,可以大大減輕設置重復性系統管理任務的操作(如定期備份)。啟用周期性任務也有一個前提條件,即對應的系統服務crond必須已經運行。
& crontab的配置文件和目錄
crontab通過多個目錄和文件設置計劃任務,不同類型的任務由不同的配置文件進行設置。
1)/etc/crontab 系統任務配置文件:此文件中設置的是維護Linux系統所需的任務,一般在系統及程序安裝時自動設置,不需要人為地修改。全局配置文件。
例如:查看/etc/crontab系統計劃任務配置文件的內容
[root@localhost /]# cat /etc/crontab
SHELL=/bin/bash????????????????????? //設置執行計劃任務的Shell環境
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?? //設置每月執行的計劃任務
例如:確認/etc/crontab 文件中設置的對應任務腳本的目錄內容
[root@localhost /]# cd /etc/
[root@localhost etc]# ls cron.hourly/ cron.daily/ cron.weekly/ cron.monthly/
cron.daily/:?????????????????????????????????????????? //該目錄中存放每天運行的任務腳本
00webalizer? 0logwatch? cups?????? makewhatis.cron? prelink? tmpwatch
0anacron???? certwatch? logrotate? mlocate.cron???? rpm
cron.hourly/:?????????????????????????????????????????? //該目錄中存放每小時運行的任務腳本
cron.monthly/:????????????????????????????????????????? //該目錄中存放每月運行的任務腳本
0anacron
cron.weekly/:?????????????????????????????????????????? //該目錄中存放每周運行的任務腳本
0anacron? 99-raid-check? makewhatis.cron
2)/var/spool/cron:用戶cron任務配置存放目錄
由用戶自行設置(使用crontab命令)的cron任務將被保存在目錄/var/spool/cron/中,文件名與對應的用戶賬號同名
crond守護進程每分鐘都會檢查/etc/crontab文件、/etc/crond/目錄以及/var/spool/cron/目錄中的改變,如果發現有配置更改,它們就會被載入內存,所以當某個crontab文件改變后并不需要重新啟動crond守護進程就可以使設置生效。
&使用crontab命令管理用戶的計劃任務
設置用戶的周期性計劃任務列表主要通過crontab命令進行,結合不同的選項可以完成不同的計劃任務管理操作。常用的選項如下。
> -e:編輯計劃列表
> -u:指定所管理的計劃任務屬于哪個用戶,默認時針對當前用戶,一般只有root用戶有權限使用此選項(用于編輯、刪除其他用戶的計劃任務)
> -l:列表顯示計劃任務
> -r:刪除計劃任務列表
編輯計劃任務:crontab? -e? [-u? 用戶名]
查看計劃任務:crontab? -l? [-u? 用戶名]
刪除計劃任務:crontab? -r? [-u? 用戶名]
1)編輯用戶的計劃任務列表:執行crontab -e 命令后,將打開計劃任務編輯界面(與vi中的操作相同)。通過該界面用戶可以自行添加具體的任務配置,每行代表一個記錄,配置的格式與/etc/crontab文件中的主體部分類似。
每一行任務配置記錄,都包括6個數據字段,分別表示不同的含義
由于各字段的作用不同,其取值范圍也不一樣,當使用 * 時表示取值范圍中的所有時間。crontab任務配置記錄中所設置的命令將在 分鐘+小時+日期+月份+星期都滿足的條件下運行
除了 * 以外,還可以使用減號"-"、逗號 ","、斜杠"/"與數字構成表達式來表示較復雜的時間關系。
> 減號 - :可以表示一個連續的時間范圍,如1~4表示整數1、2、3、4.
> 逗號 ,:可以表示一個間隔的不連續范圍,如3,4,6,8
> 斜杠符號/:可以用來指定間隔頻率,如在日期字段中的*/3表示每隔三天
例如:應用示例
0? 17? *? *? 1-5 周一到周五每天17:00
30? 8? *? *? 1,3,5 每周一、三、五的8點30分
0? 8-18/2? *? *? * 8點到18點之間每隔2小時
0? *? */3? *? * 每隔3天
例如:由root用戶設置一份crontab計劃任務表,希望完成如下任務。
每天早上7:50自動開啟sshd服務,22點50時關閉
每隔5天清空一次FTP服務器公共目錄/var/ftp/pub
每周六的7:30時,重新啟動httpd服務
每周一、三、五的17:30時,打包備份/etc/httpd目錄
[root@localhost /]# crontab -e
50 7 * * * /sbin/service sshd start
50 22 * * * /sbin/service sshd stop
0 * */5 * * /bin/rm -rf /var/ftp/pub/*
30 7 * * */6 /sbin/service httpd restart
30 17 * * 1,3,5 /bin/tar jcf httpdconf.tar.bz2 /etc/httpd
例如:每周日晚上23:55時將“/etc/passwd”文件的內容復制到宿主目錄中,保存為pwd.txt文件
[root@localhost /]# crontab -e -u jerry
55 23 * * 1,3,5 /bin/cp /etc/passwd /home/jerry/pwd.txt
因各條計劃任務在執行時并不需要用戶登錄,所以在任務配置記錄中的命令建議使用絕對路徑。另外,在設置非每分鐘都執行的任務時,分鐘字段也應該填寫一個具體的時間數值,而不要保留為默認的* ,否則將會在沒分鐘執行一次計劃任務。
2)查看用戶的計劃任務列表
例如:確認root用戶的計劃任務列表的內容
[root@localhost /]# crontab -l
50 7 * * * /sbin/service sshd start
50 22 * * * /sbin/service sshd stop
0 * */5 * * /bin/rm -rf /var/ftp/pub/*
30 7 * * */6 /sbin/service httpd restart
30 17 * * 1,3,5 /bin/tar jcf httpdconf.tar.bz2 /etc/httpd
例如:確認jerry用戶的計劃任務列表
[root@localhost /]# crontab -l -u jerry
55 23 * * 1,3,5 /bin/cp /etc/passwd /home/jerry/pwd.txt
3)刪除用戶的計劃任務列表
例如:使用jerry用戶登錄后,查看并刪除自己的計劃任務列表
[jerry@localhost ~]$ crontab -l
55 23 * * 1,3,5 /bin/cp /etc/passwd /home/jerry/pwd.txt
[jerry@localhost ~]$ crontab -r
[jerry@localhost ~]$ crontab -l
no crontab for jerry
在設置更復雜的系統管理任務操作時,可以將相關命令編寫成腳本文件,然后再計劃任務配置中加載該腳本并執行
歡迎轉載,本文標題:RHEL系統crontab計劃任務管理,轉載請注明原文網址:
http://www.55linux.com/base/2012071231.html
技術交流群:97403776
(責任編輯:admin)
轉載于:https://www.cnblogs.com/bo083/archive/2012/12/07/2807431.html
總結
以上是生活随笔為你收集整理的【转载】RHEL系统crontab计划任务管理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 文件路径,文件名,扩展名 常用操作
- 下一篇: 事务与事务隔离级别