linux公社 2018-08-02
q:linux下,如果想要在指定的某個時間點乾點什麼事,該如何制定計畫?
a:計畫任務,建立和管理在指定時間自動執行的任務。
注意:要是任務計畫在指定時間自動執行,計畫任務的服務必須是啟動的。
1、使用at命令呼叫atd程序設定在某個特定的時間,執行一次性任務。
2、使用crontab命令呼叫crond程序,設定按固定的週期(如每天、每週等)重複執行預先計畫好的任務。
一、一次性計畫任務
在指定的日期、時間點自動執行預先設定的一些命令操作。
系統服務的名稱:/etc/init.d/atd
[root@localhost ~]# service atd start1、設定格式[root@localhost ~]# service atd status
atd (pid 5790) is running... //確保atd系統服務啟動
[root@linuxidc mydata]# at 08:45at> reboot //按ctrl+d鍵提交任務at> job 3 at 2017-06-09 08:45[root@linuxidc mydata]# atq3 2017-06-09 08:45 a root
at [hh:mm] [yyyy-mm-dd]若沒有指定年月日的,預設是當天的。
1、at [hh:mm]
2、at [hh:mm] [yyyy-mm-dd]
3、at now + 數字 [minutes|hours|days|weeks]
2、查詢當前設定的at任務列表
shell> atq 或at -l
3、刪除指定任務編號的at任務
shell> atrm 編號 #atrm=at -d
4、檢視計畫任務的具體內容
shell> at -c 任務號
5、使用檔案中的命令作為計畫任務(比較少用)
shell> at 時間 -f 檔案
1、at計畫任務檔案:/var/spool/at/a開頭的檔案,任務執行完畢,檔案消失。
2、/etc/at.deny:只有該名單裡面的人不可以使用
3、/etc/at.allow:只有該名單裡面的人可以使用
二、週期計畫任務
按照預先設定的時間週期(分鐘、小時、天……)重複執行使用者指定的命令操作。
1、crontab命令呼叫crond程序執行。[root@localhost /]# service crond start2、系統服務的名稱:/etc/init.d/crond
3、使用者定義的設定,位於檔案:/var/spool/cron/使用者名稱
4、cron服務的日誌檔案:/var/log/cron
[root@localhost /]# service crond status
crond (pid 1935) is running...
1、cron服務配置檔案:/etc/crontab
[root@linuxidc mydata]# cat /etc/crontab注意:今後寫指令碼讓crontab去自動執行的時候,盡量寫命令的絕對目錄。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
# | | | | |# * * * * * user-name command to be executed
crontab 只會在/sbin、/bin、/usr/sbin、/usr/bin下查詢命令,如果命令不在這些目錄中,應該要使用絕對路徑。
2、管理cron計畫任務
root使用者可以管理指定使用者的計畫任務、普通使用者只能管理自己的計畫任務
2、檢視計畫任務:crontab -l -u 使用者名稱
3、刪除計畫任務:crontab -r -u 使用者名稱
[root@localhost linuxidc]# crontab -e //進入編輯模式,不接使用者名稱的,預設是當前使用者no crontab for root - using an empty one3、編輯語法crontab: installing new crontab
[root@localhost linuxidc]# crontab -l50 3 2 3 * echo "123"[root@localhost linuxidc]# crontab -r
[root@localhost linuxidc]# crontab -l
no crontab for root
時間數值的特殊表示方法:
1、* 表示該範圍內的任意時間
2、, 表示間隔的多個不連續時間點
3、- 表示乙個連續的時間範圍
4、/n 指定間隔的時間頻率
0 17 * * 1- 5 //周一到周五每天17:0030 8 * * 1,3,5 //每週注意:一、三、五的8點30分0 8-18 * * * //8點到18點整0 12 */3 * * //每隔3天的12點整
1、資源分配不均:多個計畫任務同時執行。
2、安全檢查:防止有非法計畫任務。
3、周和日、月不可同時並存:容易導致計畫任務時間混亂。
4、缺陷彌補
缺陷:cron在系統關機後不能執行計畫任務……
為週期性計畫任務cron收拾殘局的anacron程式解決該缺陷。
1、anacron程式是系統自帶的定時任務,不能替代cron
服務名稱:/etc/init.d/anacrond
服務日誌:/var/spool/anacron
服務配置檔案:/etc/anacrontab
2、會每個小時被執行一次,指令碼在/etc/cron.hourly
3、按天、周或月為單位去檢查系統未進行的cron任務
4、開機時自動執行,然後將未執行的計畫任務執行一遍後,anacron 就會自動停止。
Linux計畫任務
1.at命令 指定乙個時間執行乙個任務。2.cron命令 根據乙個時間表自動執行任務。3.anacron命令 在乙個指定時間間隔錯過後自動執行任務。at命令 安排乙個任務在未來執行,需要乙個系統後台atd程序。4.如果這個程序沒有開啟,那麼執行 etc init.d atd restart chkc...
Linux 計畫任務
at命令可以在某一指定時間排程一次性作業命令格式 at q x l f file d v time引數含義 q使用指定的佇列來儲存at資料,預設儲存在a佇列,隊列表號為a z,a z總52個 l列出所有的at計畫任務,等同於atq命令 d刪除at計畫任務,等同於atrm v列出所有已經完成單尚未刪除...
linux計畫任務
cron是乙個linux下的定時執行工具,可以在無需人工干預的情況下執行作業。由於cron 是linux的內建服務,但它不自動起來,可以用以下的方法啟動 關閉這個服務 sbin service crond start 啟動服務 sbin service crond stop 關閉服務 sbin se...