Linux基本計劃任務
(1)只執行一次,在未來的某個指定時間執行一次
指定的時間格式有:
絕對時間:HH:MM,DD.MM.YY,MM/DD/YY
相對時間:now+數字(minutes,hours,days,weeks)
模糊時間:noon(即12點),midnight(即24點),teatime(即16點)
命令格式:at [選項] [時間]
命令選項:
-m 指定任務完成後,將給用戶發送郵件
-l 與atq命令一樣
-d 與atrm命令一樣
-v 顯示任務將被執行的時間
-c 打印任務內容到標準輸出
-V 顯示版本信息
atd服務必須啟動
rhel6 | rhel7 |
---|---|
#service atd restart |
#systemctl restart atd.service |
1、2分鐘後向/tmp/1.txt輸入當前時間,
[root@rhel7-01 ~]# at now+2minutes #回車
at> echo `date` >> /tmp/1.txt #回車
at> <EOT> #寫入完命令後按下crtl+d提交任務
job 3 at Thu Mar 8 15:44:00 2018
[root@rhel7-01 ~]# tail -f /tmp/1.txt
2018年 03月 08日 星期四 15:44:00 CST
2、查看當前at的任務,at -l
[root@rhel7-01 ~]# at now+5minutes
at> echo `date` >> /tmp/1.txt
at> <EOT>
job 4 at Thu Mar 8 15:52:00 2018
[root@rhel7-01 ~]# at -l
4 Thu Mar 8 15:52:00 2018 a root
[root@rhel7-01 ~]#
3、刪除任務,at -d jobID 或者 atrm jobID
[root@rhel7-01 ~]# at now+5minutes at> echo `date` >> /tmp/1.txt at> <EOT> job 5 at Thu Mar 8 15:54:00 2018 [root@rhel7-01 ~]# at -l 5 Thu Mar 8 15:54:00 2018 a root [root@rhel7-01 ~]# at -d 5 [root@rhel7-01 ~]# at -l [root@rhel7-01 ~]#
4、系統空閑的時候自動執行任務
[root@rhel7-01 ~]# batch
at> echo "hello" > /dev/pts/1
at> <EOT>
job 6 at Thu Mar 8 15:55:00 2018
[root@rhel7-01 ~]# hello
[root@rhel7-01 ~]#
at有兩個配置文件/etc/at.deny和/etc/at.allow
如果deny單獨存在,則是deny文件記錄以外的所有用戶都可以使用at命令
如果allow單獨存在,則是只允許allow內的用戶可以使用at命令
如果同時存在,則只允許allow內的用戶使用at命令
(2)周期性執行任務
可周期性的在指定時間裏重復執行任務
命令格式:crontab [選項] [參數]
命令選項:
-u 指定設置某用戶的計劃任務,只有root可以設置
-l 列出用戶的計劃任務
-r 刪除某用戶的所有計劃任務
-e 編輯某用戶的所有計劃任務
時間格式說明:
第一個位置表示:分鐘(0-59)
第二個位置表示:小時(0-23)
第三個位置表示:日期(1-31)
第四個位置表示:月份(1-12)
第五個位置表示:星期(0-7,0和7均代表星期日)
第六個位置表示:所要執行的命令
時間通配表示:*
代表當前位置的所有時間點5 * * * *
每天每小時的05分開始執行,
離散時間點10,25,50 * * * *
每天每小時的10分、25分、50分各執行一次-
連續時間點30-40 * * * *
每天每小時的30-40分鐘之間,每一分鐘執行一次/
對應取值範圍內每隔多少時間執行一次1 */2 * * *
每隔兩小時的01分執行一次
crond任務分為用戶計劃和系統計劃
1、系統計劃的配置文件在/etc/crontab文件裏
2、用戶計劃在/var/spool/cron/username
crontab權限問題到/var/adm/cron/下一看,文件cron.allow和cron.deny是否存在
用法如下:
1、如果兩個文件都不存在,則只有root用戶才能使用crontab命令。
2、如果cron.allow存在但cron.deny不存在,則只有列在cron.allow文件裏的用戶才能使用crontab命令,如果root用戶也不在裏面,則root用戶也不能使用crontab。
3、如果cron.allow不存在, cron.deny存在,則只有列在cron.deny文件裏面的用戶不能使用crontab命令,其它用戶都能使用。
4、如果兩個文件都存在,則列在cron.allow文件中而且沒有列在cron.deny中的用戶可以使用crontab,如果兩個文件中都有同一個用戶,以cron.allow文件裏面是否有該用戶為準,如果cron.allow中有該用戶,則可以使用crontab命令。
crond服務必須啟動 |
rhel6 | rhel7 |
---|---|---|
#service crond restart |
#systemctl restart crond |
示例:
- 每小時的09分執行一次
9 * * * *
- 每周3至6的10點、23點分別執行一次
0 10,23 * * 3-6
或者0 10,23 * * 3,4,5,6
- 每小時的10-30分之間每隔2分鐘執行一次
10-30/2 * * * *
- 每天12點09分執行一次
9 12 * * *
- 每周3的12點09分執行一次
9 12 * * 3
- 每月9號12點09分執行一次
9 12 9 * *
- 每年的6、12月的9號12點09分分別執行一次
9 12 9 6,12 *
思考題
* */2 * * *
,代表什麽意思?0 12 9 * 6
,代表什麽意思?
答案
- 每隔一小時,每分鐘執行一次
- 每月9號且是周六的時候,12點正執行一次(一般比較少日與周同時使用,因為要同時滿足條件的概率較低。)
Linux基本計劃任務