計划任務之一次性計划任務(at)和周期性計划任務(crontab)(重點)


一:知識要點

----計划任務的意義
----計划任務分類
----用戶計划任務crontab
----系統計划任務
----計划任務使用注意事項
----anacron服務介紹

 

二:計划任務的意義
計划任務

----創建和管理在指定時間自動執行的任務
注意事項
----要使任務計划在指定時間自動運行,計划任務的服務必須是啟動的
計划任務分類
----使用at命令調用atd進程設置在某個特定的時間,執行一次性任務
----使用crontab命令調用crond進程,設置按固定的周期(如每天、每周等)重復執行預先計划好的任務
一次性計划任務
at命令
----在指定的日期、時間點自動執行預先設置的一些命令操作,屬於一次性計划任務
----系統服務的名稱:/etc/init.d/atd
----設置格式:at [HH:MM] [yyyy-mm-dd]

 

 

at -c 任務號
----查看計划任務的具體內容
atq命令
----用途:查詢當前設置的at任務列表
同at -l
atrm命令:
----用途:刪除指定任務編號的at任務
----格式:atrm 編號
同 at -d
at命令常用時間格式:

----at [HH:MM]
----at [HH:MM] [yyyy-mm-dd]
----at now + 數字 [minutes|hours|days|weeks]
at 時間 -f 文件

----使用文件中的命令作為計划任務

----at now + 5 minutes -f /root/test.sh
at計划任務文件位置

/var/spool/at/a開頭的文件,任務執行完畢,文件消失

/etc/at.deny :只有該名單里面的人不可以使用

/etc/at.allow :只有該名單里面的人可以使用

crontab命令(周期計划任務
按照預先設置的時間周期(分鍾、小時、天……)重復執行用戶指定的命令操作,屬於周期性計划任務
服務名稱:/etc/init.d/crond
主要設置文件
用戶定義的設置,位於文件:/var/spool/cron/用戶名
配置文件的通常包含三個部分

----注釋
----環境變量
----cron命令
cron服務配置文件
----位於文件:/etc/crontab
-----系統cron就在該文件定義,是為了維護系統能夠正常運行的,任務的格式也和用戶cron有點不同,多了一個username
管理cron計划任務
-----編輯計划任務:crontab -e [-u 用戶名]
-----查看計划任務:crontab -l [-u 用戶名]
-----刪除計划任務:crontab -r [-u 用戶名]

 

 

 

 

 實例:創建目錄/tmp/testdir-當前日期時間

[root@localhost ~]# mkdir /tmp/testdir-$(date +%Y%m%d%H%M)

[root@localhost ~]# ls

router-201909060933

實例:每4小時執行一次對/etc目錄的備份,備份至/backup目錄中,保存的目錄名為形式如etc-201504020202

[root@localhost ~]# crontab -l
00 */4 * * * cd / && tar -jcf /backup/etc-$(date +\%Y\%m\%d\%H\%M).tar.bz etc/

實例:每周2,4,6備份/var/log/messages文件至/backup/messages_logs/目錄中,

保存的文 文件名格式為messages-20150402

[root@localhost ~]# crontab -l
00 00 * * 2,4,6 cd /var/log/ && tar -jcf /backup/messages_logs/messages-$(date +\%Y\%m\%d).tar.bz messages

實例:每天每兩小時取當前系統/tar/op.txt文件中的所有以S開頭的信息至/tmp/po.txt文件中。

[root@localhost ~]# crontab -l
* */2 * * *b grep "^S" /tar/op.txt > /tmp/po.txt

實例:工作日的工作時間內,每兩小時執行一次echo“howdy”

[root@localhost ~]# crontab -l
* */2 * * 1-5 echo "howdy"

每月每天每小時的第 0 分鍾執行一次 /bin/ls

0 * * * * /bin/ls

在 12 月內, 每天的早上 6 點到 12 點,每隔 3 個小時 0 分鍾執行一次 /usr/bin/backup

0 6-12/3 * 12 * /usr/bin/backup

周一到周五每天下午 5:00 寄一封信給 alex@domain.name

0 17 * * 1-5 mail -s "hi" alex@domain.name < /tmp/maildata

每月每天的午夜 0 點 20 分, 2 點 20 分, 4 點 20 分....執行 echo "haha"

20 0-23/2 * * * echo "haha"

下面再看看幾個具體的例子:

0 */2 * * * /sbin/service httpd restart 意思是每兩個小時重啟一次apache 50 7 * * * /sbin/service sshd start 意思是每天750開啟ssh服務 50 22 * * * /sbin/service sshd stop 意思是每天2250關閉ssh服務 0 0 1,15 * * fsck /home 每月1號和15號檢查/home 磁盤 1 * * * * /home/bruce/backup 每小時的第一分執行 /home/bruce/backup這個文件 00 03 * * 1-5 find /home "*.xxx" -mtime +4 -exec rm {} \; 每周一至周五3點鍾,在目錄/home中,查找文件名為*.xxx的文件,並刪除4天前的文件。 30 6 */10 * * ls 意思是每月的1112131日是的630執行一次ls命令

 

 

實例:創建目錄/tmp/testdir-當前日期時間

 [root@localhost ~]# mkdir /tmp/testdir-$(date +%Y%m%d%H%M)

======================================================================================

周期計划任務注意事項
資源分配不均
多個計划任務同時運行
安全檢查
防止有非法計划任務
周和日、月不可同時並存
容易導致計划任務時間混亂

anacron程序介紹
anacron程序

----彌補cron在系統關機后不能執行計划任務的問題
----不能替代cron
----會每個小時被執行一次,腳本在/etc/cron.hourly
----按天、周或月為單位去檢查系統未進行的cron任務
----/var/spool/anacron
----服務名稱:/etc/init.d/anacrond
-----開機時自動運行,然后將未執行的計划任務執行一遍后,anacron 就會自動停止

========================================================================

2: crontab 命令,設置周期性計划任務
1>腳本名稱:/etc/init.d/crond
2>主要配置文件:
·全局配置文件:/etc/crontab

.編輯:crontab -e [-u 用戶名]
·查看:crontab -l [-u 用戶名]
·刪除:crontab -r [-u 用戶名]
注意:-u 選項只有 root 用戶可用

示例:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM