Linux計劃任務
Centos7:systemctl is-enabled "servicename"
systemctl enabled "servicename"(設為開機啟動)
Centos6:chkconfig --list "servicename"
chkconfig --add "servicename"(1 設為開機啟動)
chkconfig "servicename" on(2 設為開機啟動)
計劃任務
at:atd服務,適用於一次性的計劃任務
at [option] 時間(默認情況下所有的標準輸出都不會顯示,執行結果會以郵件方式發送在)
建議:如果腳本要放到計劃任務中執行,要將執行結果輸入到/dev/null中,否則會產生大量的垃圾郵件
at "time" wall 10:00 clock(到了10:00廣播10:00到了 Ctrl -d保存退出)
/var/spool/at下存有計劃任務
-l 查看計劃任務
-c "任務編號" :顯示詳細的任務信息
-d "任務編號"或 atrm "任務編號":刪除指定任務編號
-V 查看當前atd服務版本
由於at是交互式程序,當需要腳本來創建計劃任務的時候則可以使用重定向輸入:at 12:00 <<EOF,然後輸入指定內容即可
-f "文件名" 將文件內容輸入到at中
-m 當計劃任務完成後判斷是否成功
TIME:定義出什麽時候進行at這項任務的時間
HH:MM[yyyy-mm-dd]定義年月日
noon,midnight,teatime(4pm)
tomorrow
now+#{min,hours,days,weeks}
at now+20min(20分鐘後執行,20分鐘後的整數時間,其他時間相似於這個)
白名單:at.allow(默認不存在)
黑名單:at.deny(默認存在)
如果要使普通用戶不能執行at,則編輯/etc/at.deny,將要限制的用戶加入這個文件即可
如果一個用戶既在at.deny中也在at.allow(白名單)中則是允許執行
當有白名單at.allow這個文件後,就意味著所有不在at.allow文件中的普通用戶統統拒絕
如果沒有白名單也沒有黑名單則普通用戶都沒有權限執行at
周期性計劃任務cron
/var/spool/cron中存放創建的計劃任務
/var/log/cron中存放的是cron的日誌
crond服務依賴於一個cronie(主程序包)的包,提供crond服務,包含crond服務以及配置文件
cronie-anacron輔助程序包,rpm -ql cronie-anacron,會列出一系列目錄,當中/etc/anacrontab是配置文件
/etc/cron.daily存放每天執行的任務
crontab是計劃任務非常重要的一個配置文件
系統計劃任務:/etc/crontab
分鐘 小時 日 月 周(0 or 7都表示周日)
*/10 * * * * "username" "exec command" (每十分鐘執行)
每月的號 數與星期幾同時存在默認是或的關系
@reboot 重啟之後執行
@yearly 0 0 1 1 *(每年一月一號0點0分)
@annually 0 0 1 1 *(一月一號0點0分執行)
@monthly 0 0 1 * *(每月1號0點0分執行)
@weekly 0 0 * * 0(每個周日0點0分執行)
@daily 0 0 * * *(每天的0點0分執行)
@hourly 0 * * * *(每小時整執行)
* * * * *(每分鐘執行)
在計劃任務中,%符號有著特殊意義
/etc/cron.d/中可以存放一系列計劃任務文件
Centos6:/etc/cron.daily/tmpwatch中用來定時清除臨時文件的
Centos7:systemctl status systemd-tmpfiles-setup(查看清除臨時文件的程序狀態)
用戶計劃任務:
crontab -e(普通用戶創建計劃任務,默認打開的是vi程序,沒有顏色,編輯變量export EDITOR=vim即可)
crontab -l(查看計劃任務)
crontab -l -u 'username' 查看指定用戶的計劃任務
crontab -r -u 'username' 刪除指定用戶的計劃任務
crontab -i -r 出現是否刪除的提示信息
控制用戶執行計劃任務:
/etc/cron.{allow,deny}
sleep可以實現每幾秒實現一次
sleep 10;command(每10s執行一次)
Linux計劃任務