請關注本頭條号,每天堅持更新原創幹貨技術文章
如需學習視頻,請查看本頭條号簡介,免費在線觀看學習視頻
Windows系統的計劃任務估計大家都用過,圖形界面,使用簡單。Linux同樣有計劃任務工具,并且功能更為強大,尤其是結合腳本。Linux裡常用2種計劃任務工具命令:at和crontab。
1. Linux計劃任務工具:at
at命令用于一次性執行某任務。當然,如果你結合能自動循環執行任何的腳本,實際上也能達到循環或定期反複執行的效果。如果你想定期反複執行某任務,首選crontab,而不是at。at隻能定時一次性執行某程序或者某腳本。
以CentOS7.5為例,默認情況下,最小化安裝并沒有包含at工具。需要管理員手動安裝。
[root@zcwyou ~]# at
-bash: at: 未找到命令
安裝at
[root@zcwyou ~]# yum -y install at
最後系統表明安裝成功:
Running transaction
正在安裝 : at-3.1.13-23.el7.x86_64 1/1
驗證中 : at-3.1.13-23.el7.x86_64 1/1
已安裝:
Linux安裝at
CentOS 6開啟atd服務。
[root@zcwyou ~]# /etc/init.d/atd start
或者
[root@zcwyou ~]# service atd start
CentOS 6檢查:
[root@zcwyou ~]# ps -ef |grep atd
确認能看到/usr/sbin/atd正在運行:
root 53055 1 0 09:30 ? 00:00:00 /usr/sbin/atd -f
CentOS 7,開啟atd服務。
[root@zcwyou ~]# systemctl start atd
CentOS 7檢查:
[root@zcwyou ~]# systemctl status atd
确認能看到active (running):
Active: active (running)
OK!,現在at功能已經成功開啟了。默認情況下,at已經設置好了開機自啟動。
linux啟用at計劃任務
2. 常見使用方法
2.1 使用at命令定時執行某腳本
需求:2天後,下午6點執行/root/abc.sh,請提前寫好abc.sh這個腳本文件,并保證具有x可執行權限。
[root@zcwyou ~]# at 6pm 2 days
執行過程
at> /root/abc.sh
at> 按鍵盤上的ctrl d,表示計劃任務設置完畢。
at>
job 2 at 2018-10-11 18:00
at計劃任務保存位置
/var/spool/at
linux使用at設置計劃任務
2.2 查看at計劃任務
查看任務命令atq,可以看到有一個正在等待執行的任務,序号為4
[root@zcwyou ~]# atq
4 2018-10-11 18:00 a root
linux使用at查看計劃任務
顯示計劃任務的自動生成的腳本,以序号為4的任務為例:
[root@zcwyou ~]# at -c 4
2.3 使用atrm命令删除計劃任務
比如删除序号為4的計劃任務:
[root@zcwyou ~]# atrm 4
linux删除at任務
2.4 定時重啟
兩分鐘後後重啟服務器
[root@zcwyou ~]# at now 2 minutes
at> reboot
at> 按鍵盤上的ctrl d,表示計劃任務設置完畢。
at>
job 1 at Wed Oct 10 10:09:00 2018
看到job 1被創建了,接下來查看它
[root@zcwyou ~]# atq
1 Wed Oct 10 10:09:00 2018 a root
确實可以看到有一個序号為1的任務等待執行。2分鐘後,服務器被重啟了。
2.5 指定時間執行任務
明天淩晨2點執行某任務
[root@zcwyou ~]# at 02:00am tomorrow
2018年12月30号淩晨4點執行某任務
[root@zcwyou ~]# at 04:00am 12/30/2018
結合以上例子,可以靈活修改一些時間選項
比如把minutes(分鐘)改為hours(小時),2小時後執行某任務。
[root@zcwyou ~]# at now 2 hours
3. at的時間選項
- hh:mm,即小時:分鐘(當天,如果時間已過,則在第二天執行)
- midnight(深夜),noon(中午),teatime(下午茶時間,即下午4點),today,tomorrow等
- 時間後加am表示上午,pm表示下午
- 指定具體執行日期mm/dd/yy(月/日/年)或dd.mm.yy(日.月.年)
- 相對計時法now n 單位,now是現在時刻,n為數字,單位有minutes、hours、days、weeks,分别表示分鐘、小時、天、周
4. 限制用戶使用at命令,一個用戶名占用一行
允許用戶列表:
/etc/at.allow
禁止用戶列表
/etc/at.deny
Step1: atd先檢查allow列表,如果裡面有指定的用戶,即可允許該用戶使用at。
Step2: 如果用戶不在allow列表中,則需要繼續查看deny列表文件是否存在并且需要匹配裡面的内容,如果deny列表文件存在并且内容為空,則該用戶可以使用at。如果deny列表文件不存在,則該用戶不能使用at,root用戶不受限制。
點擊了解更多,快速查看更多的技術文章列表。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!