at
at
命令可以用來在某一時段執(zhí)行一次任務(wù)雌贱,只會執(zhí)行一次啊送,不會重復(fù)執(zhí)行。
at命令是由atd服務(wù)來控制的欣孤,使用之前先查看atd服務(wù)是否正常:
$ /etc/init.d/atd status
* atd is running
如果沒有的話就需要安裝:
$ sudo apt-get install at
$ /etc/init.d/atd start
at
命令的基本語法:
at [options] TIME
常用的options:
- -m:當(dāng)at工作完成之后馋没,用email通知用戶任務(wù)已經(jīng)執(zhí)行完成
- -l:列出目前所有的任務(wù)
- -d:取消一個任務(wù)
TIME是時間,常用的格式:
-
HH:MM
:在今天的某時某刻開始執(zhí)行任務(wù)降传,如果時間已過篷朵,則延遲到明天的這個時間開始。 -
HH:MM YYYY-MM-DD
:在具體的某年某月某天執(zhí)行搬瑰。 HH:MM[am|pm] [Month] [Date]
-
HH:MM[am|pm] + number [minutes|hours|days|weeks]
:在某個時間點再加上時間后執(zhí)行款票,ex:now + 1 minutes
一個例子:
創(chuàng)建一個任務(wù),1分鐘后輸入hello world到/tmp/t1文件
$ at now + 1 minutes
at> echo "hello world" > /tmp/t1
at> <EOT> # 輸入完成后按Ctrl + d保存
可以使用at -l
或者atq
來查看剛才創(chuàng)建的任務(wù):
$ atq
3 Fri Aug 11 22:41:00 2017 a jby
3是任務(wù)序號泽论,如果創(chuàng)建錯了任務(wù)就可以使用這個數(shù)字來刪除:
$ atrm 3
權(quán)限
可以用過配置文件來設(shè)置哪些用戶能使用at命令艾少,哪些用戶不能使用:
- at命令會先查找
/etc/at.allow
文件,如果這個文件存在翼悴,那么只有在這個文件里面的用戶才能使用at命令缚够。 - 如果不存在,那么就會查找
/etc/at.deny
文件鹦赎,如果文件存在谍椅,那么不在這個文件里面的用戶才可以使用at命令。 - 如果2個文件都不存在古话,那么只有root才能使用at命令
2個文件的內(nèi)容格式都是一行一個用戶名
batch
batch命令的用法跟at一樣雏吭,只不過batch添加的任務(wù)會在CPU負(fù)載小于0.8的時候才執(zhí)行,如果到了執(zhí)行時間點CPU負(fù)載過高就會延緩執(zhí)行陪踩。
crontab
crontab
命令是用來一直循環(huán)執(zhí)行某個任務(wù)杖们。
基本語法:
crontab [-u user] [-l-e-r]
- -u:只有root才能使用悉抵,用來幫其他的用戶創(chuàng)建或者刪除任務(wù)。
- -e:編輯任務(wù)
- -l:查看當(dāng)前的任務(wù)
- -r:刪除所有的任務(wù)
一個列子:
輸入crontab -e
進(jìn)入編輯模式摘完,輸入5 * * * * echo "hello >> /tmp/t1"
姥饰,然后保存退出(不需要重新啟動cron服務(wù),會自動每分鐘重新讀取任務(wù)內(nèi)容)孝治。
任務(wù)的格式為:
分 時 日 月 周 命令
前面5個字段是時間列粪,他們之間用空格隔開。表示的就是再某一個時間點執(zhí)行任務(wù)谈飒,取值范圍就是正常的時間取值范圍(比如:分鐘是0-59岂座,時是0-23),周的取值是0-7表示星期一到星期天,o跟7都是星期天
例子:
- 5 * * * * 每個小時的5分執(zhí)行任務(wù)
- 10 3 * * * 每天的3點10分執(zhí)行任務(wù)
- 10 3 2 * * 每個月2號的3點10分執(zhí)行任務(wù)
一些特殊的取值:
- *:表示任何時刻
- ,:英文逗號表示and的意思步绸,比如 10 3,6 * * * 每天的3點10分跟6點10分都執(zhí)行任務(wù)
- -:減號表示的范圍掺逼,比如:10 3-6 * * * 每天的3點到6點之間的每個小時的10分都執(zhí)行任務(wù)
- /n:表示的是單位間隔,比如 */1 * * * * 每隔1分鐘執(zhí)行一次任務(wù)
權(quán)限
cron服務(wù)也有兩個文件/etc/cron.allow
瓤介、/etc/cron.deny
來控制用戶的使用權(quán)限,邏輯都at
一樣