linux任務計劃

linux中任務計劃:

一次性執行:

at,batch

batch:不需要指定時間,會在空閒時間執行

週期性執行:

vixie cron:crontab

我們通常看到的是crontab,crontab實際上是個表格或者說是文件,來爲vixie cron的一個進程crond提供配置信息


1、一次性任務執行:

at TIME

at>

Ctrl+d:提交任務


at -l = atq:查看等待執行的任務


at 11:30

noon,midnight,teatime

例:

[root@www:~]# at now+3min
at> ls /etc
at> date按下Ctrl+d
at> <EOT>
job 2 at 2015-04-11 21:27
[root@www:~]# at -l
32015-04-11 21:31 a root

執行結果以郵件方式發送給任務發起者:

刪除尚未執行的任務:

at -d JOB_ID = atrm JOB_ID

# at -d 2 或者 # atrm 2

任務隊列

多個

a


at -f /PATH/TO/AT_SCRIPT TIME


# vim jobs.txt
ls /var
cat /etc/fstab
# at -f jobs.txt 22:00


2、週期性任務執行

vixie cron

crond:daemon守護進程

/etc/init.d/

uptime:查看當前系統是什麼時候啓動的,運行多久時間了,並且當前系統負載是什麼

crond:配置文件

crontab:

系統cron:/etc/crontab

用戶cron:/var/spool/cron/USERNAME

a、運行者身份:

    用戶cron:定義者

        6個字段,與系統cron相比,無需指定用戶身份

用戶cron的定義:

crontab(類似於vim) 執行之後,會保存在/var/spool/cron/目錄下一個以當前用戶命名的文件

-e:

-r:移除配置文件,刪除所有任務

-l:列出週期性任務

-u USERNAME:

crontab -e -u hadoop

系統cron:在配置文件中指定

7個字段

[root@www:~]# cat /etc/crontab
# 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

通配符:

        *:相應時間點的所有有效取值

        ,:離散取值

3,10,17,24 * * * * root cat /etc/fstab 每小時的第3分鐘,第10分鐘,執行這個命令

3,33 * * * * root cat /etc/fstab 每半小時執行一次

/:定義指定取值範圍內的頻率

*/3 * * * * root cat /etc/fstab 每三分鐘執行一次

-:連續取值

                1 8-20/3 * * * root cat /etc/fatab 從8點到晚上8點每三小時的第一分鐘執行一次

每兩天的早上2點7分將etc下所有文件打包成etc-`date +%F`.tar.xz格式放在backup目錄下

7 2 */2 * * root tar -Jcf /backup/etc-`date +%F`.tar.xz /etc/*


週一到週五8點到18點每隔3個小時執行兩次

2,32 8-18/3 * * 1-5


b、PATH:

/bin:/sbin:/usr/bin:/usr/sbin

如果是命令:使用絕對路徑

如果是腳本:在腳本中自定義PATH

c、拒收郵件

    方法一:

MAILTO=''

    方法二:

        &> /dev/null

[root@www:~]# crontab -e
MAILTO=''
*/2 * * * * echo who 
[root@www:~]# ls /var/spool/cron/
root
[root@www:~]# crontab -e -u hadoop
*/2 * * * * echo who 
[root@www:~]# ls /var/spool/cron/
root hadoop

以秒爲單位執行任務計劃:

方法1:

* * * * * /usr/bin/unison webdata 每分鐘執行一次

* * * * * sleep 30 && /usr/bin/unsion webdata

方法2:

* * * * * for i in 0 1 2; do some_job & sleep 15; done; some_job

第0秒,循環第一次(第一次執行命令),睡15秒

第15秒,循環第二次(第二次執行命令),睡15秒

第30秒,循環第三次,睡15秒

第45秒,執行最後一個命令


注:使用%時要加反斜線,例:

1 2 3 * * touch ~/file_$(data +\%Y\%m\%d).txt

但使用單引號後可以不再使用反斜線,例:

1 2 3 * * touch ~/file_$(data +'%Y%m%d').txt


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章