Linux任務計劃
一、任務計劃
(1)未來的某一個時間點執行一次某任務:at、batch
(2)周期性運行某任務
二、at 命令使用
(1) 注意:要執行at時候,必須有atd這個服務的支持才行,在某些新版的destribution中atd默認是沒有啟動的。不過我們的CentOS默認是啟動的
啟動方法:~]# /etc/init.d/atd restart
設置開機時啟動這個服務:~]# chkconfig atd on
(2)我們使用at這個命令來生成所需要運行的工作,并將這個工作以文本文件的方式寫入/var/spool/at目錄內,該工作便能等待atd這個服務的 取用與執行了。
(3)我們可以利用/etc/at.allow與/etc/at.deny這兩個文件進行at的使用限制
/etc/at.allow:寫在這個文件中的用戶才可以使用at
/etc/at.deny:寫在這個文件中的用戶不可以使用at
以上兩個文件都沒有,則表示只有root用戶才可以使用
(4)at [OPTION]… TIME
TIME:表示法
A、HH:MM [YYYY-MM]
B、模糊時間表示
noon midnight teatime 、、、
tomorrow
now+#{minutes,hours,days, OR weeks}
常用選項:
-l: 查看作業隊列。相當于 atq
-f: /path/to/somefile 從指定文件中讀取作業任務,而不在交互式輸入
-d:刪除制定的業務,相當于atrm
-c:查看指定作業的具體內容
-q QUEUE:指明隊列
結束任務編輯用Ctrl+d
注意:作業的執行結果是以郵件的形式發送給提交作業用戶
(5)執行方式:
1)交互式
2)輸入重定向
3) at –f 文件
(6)示例:
創建任務
查看任務
、、、
注意:
數字“2”表示任務隊列號
(7)取消任務
三、batch 命令
會讓系統自動選擇在系統資源比較閑的時間去執行指定的任務
與at命令使用一樣
四、周期性任務計劃:cron
(1)cron執行的每一項工作都會被記錄在/var/log/cron這個日志文件中。
(2) cronie: 主程序包,提供crond守護進程及相關輔助工具
cronie-anacron: cronie的補充程序,用于監控cronie任務執行狀況,如cron中的任務在過去該運行的時間點未能正常運行,則anacron會隨后啟動一次此任務
crontabs:包含CentOS提供系統維護任務
(3)確保crond守護進程(daemon) 處于運行狀態:
查看:
CentOS 7:
sysenctl status crond service
狀態:Acitive:Active(running…)
CentOS 6:
service crond status
狀態:……..is running
(4)crond任務分兩種:
1)、系統crond任務:主要實現系統自身的維護
手動編寫/etc/crontab文件
2)、用戶crond任務:
要使用crontab命令
注意:向crond提交作業的方式不同于at,他需要使用專用的配置文件,此文件有固定格式,不建議使用文本編輯器直接編輯此文件;要使用crontab命令
五、系統cron的配置格式:cat /etc/crontab
1、配置文件
一共7個字段
注意:(1)、每一行定義一個周期性任務
(2)、各個之間用空格隔開
(3)、此處的環境變量不同于用戶登錄后獲取的環境變量,因此,建議命令使用絕對路徑,或者自定義PATH環境變量
(4)、各個字段表示什么意思:
1)* * * * * :定義周期性時間
2)user-name:運行任務的用戶身份
3)command to executed:什么任務
2、示例:
表示指定用戶zq每五分鐘用ps命令查看進程信息
六、用戶cron的任務
1、配置文件:/var/spool/cron/username(uaername表示一個用戶名)
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
# For details see man 4 crontabs
# 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
注意:
(1)、每行定義一個cron任務,共六個字段
(2)、此處的環境變量不同于用戶登錄后獲取的環境變量,因此,建議命令使用絕對路徑,或者自定義PATH環境變量
(3)、郵件發送給當前用戶
2、crontab 命令
crontab [-u user] [-l | -r | -e] [-i] [-s]
(1)選項:
-e :編輯任務
-l :列出所有任務
-r :移除所有任務:即刪除/var/spool/cron/username文件
-i :在使用-r選項時提示用戶交互
-u user :root用戶可為指定用戶管理cron任務
3、示例:
(1)使用 crontab -e 進入編輯頁面,進行任務制定
(2)查看任務
(3)移除任務
注意:
(1)、運行結果以郵件形式通知給當前用戶; 如果拒絕接收郵件
1)、COMMAND > /dev/null
2)、COMMAND &> /dev/null
(2)、定義COMMAND時候,如果命令需要用到%,這時候需要對其轉義;但放置于單引號中的%不用轉義
七、周期性任務時間表示法:
1、特定值。
給定時間點有效取值范圍內的值
注意:day of week 和day of month 一般不同時使用
2、*
給定時間點上有效取值范圍內的所有制:表示 “每、、、”
示例:
(1)、3****:每小時執行一次,每小時的第三分鐘
(2)、34**5:每周執行一次,每周五的四點三分
(3)、567**:每月執行一次,每月七號六點五分
(4)、78910*:每年執行一次,每年的十月九號八點七分
3、離散取值:
在給定時間點上使用逗號分隔的多個值
#,#,#
示例:
(5)、98**3,7:每周三和周日的八點九分
(6)、08,20**3,7:每周三和周日的八點零分和二十點零分
4、連續取值方式
在給定的時間點上使用‘–’連接開頭和結束
#-#
示例:
(7):0 9-18 * * 1-5:工作時間上的每個小時
5、在指定時間上,定義步進長度:/
*/#
/#:即步長
示例:
(8)、*/5 * * * *:每五分鐘執行一次任務
注意:
1、制定的時間點上不能被步長整除時候,其意義將不復存在。
2、最小時間單位為“分鐘”,想要完成“秒”級別的任務就得需要額外其它機制
定義成每分鐘任務:而在利用腳本實現在每分鐘之內,循環執行多次
原創文章,作者:zq,如若轉載,請注明出處:http://www.www58058.com/75559