Linux下的兩種定時執行任務的方法:at命令,以及crontab服務spa
crontab rest
一、crontab 經常使用命令code
cron服務提供 crontab命令來設定cron服務的,如下是這個命令的一些參數與說明:blog
crontab -u //設定某個用戶的cron服務,通常root用戶在執行這個命令的時候須要此參數crontab
crontab -l //列出某個用戶cron服務的詳細內容it
crontab -r //刪除某個用戶的cron服務class
crontab -e //編輯某個用戶的cron服務date
好比說root查看本身的cron設置:crontab -u root -lcommand
二、命令格式 方法
基本格式 :
* * * * * command
分 時 日 月 周 命令
第1列表示分鐘1~59 每分鐘用*或者 */1表示
第2列表示小時1~23(0表示0點)
第3列表示日期1~31
第4列表示月份1~12
第5列標識號星期0~6(0表示星期天)
第6列要運行的命令
三、案例
實例1:每1分鐘執行一次myCommand
* * * * * myCommand
實例2:每小時的第3和第15分鐘執行
3,15 * * * * myCommand
實例3:在上午8點到11點的第3和第15分鐘執行
3,15 8-11 * * * myCommand
實例4:每隔兩天的上午8點到11點的第3和第15分鐘執行
3,15 8-11 */2 * * myCommand
實例5:每週一上午8點到11點的第3和第15分鐘執行
3,15 8-11 * * 1 myCommand
實例6:每晚的21:30重啓smb
30 21 * * * /etc/init.d/smb restart
實例7:每個月一、十、22日的4 : 45重啓smb
45 4 1,10,22 * * /etc/init.d/smb restart
實例8:每週6、週日的1 : 10重啓smb
10 1 * * 6,0 /etc/init.d/smb restart
實例9:天天18 : 00至23 : 00之間每隔30分鐘重啓smb
0,30 18-23 * * * /etc/init.d/smb restart
實例10:每星期六的晚上11 : 00 pm重啓smb
0 23 * * 6 /etc/init.d/smb restart
實例11:每一小時重啓smb
* */1 * * * /etc/init.d/smb restart
實例12:晚上11點到早上7點之間,每隔一小時重啓smb
* 23-7/1 * * * /etc/init.d/smb restart
at
at通常是臨時任務,crontab通常是週期性任務
at格式:
at #執行的時間#
at->#執行的任務腳本#
at->#執行的任務腳本#
at->
案例
一、使用相對時間執行命令
1 [root@Process-Mod ~]# ls 2 anaconda-ks.cfg 3 [root@Process-Mod ~]# at now + 1min //一分鐘後執行 4 at> date >> date.txt 5 at> <EOT> 6 job 8 at Sat Dec 28 04:03:00 2019 7 [root@Process-Mod ~]# date 8 Sat Dec 28 04:02:33 CST 2019 9 [root@Process-Mod ~]# at -l //當前執行的計劃任務 10 8 Sat Dec 28 04:03:00 2019 a root 11 [root@Process-Mod ~]# ls 12 anaconda-ks.cfg date.txt 13 [root@Process-Mod ~]# more date.txt //已經把當前信息導入 14 Sat Dec 28 04:03:00 CST 2019
二、使用絕對時間執行命令
1 [root@Process-Mod ~]# at 04:07 2 at> ls / >>ls.txt 3 at> <EOT> 4 job 10 at Sat Dec 28 04:07:00 2019 5 6 [root@Process-Mod ~]# atq //和at -l 功能一致 7 10 Sat Dec 28 04:07:00 2019 a root 8 9 [root@Process-Mod ~]# date 10 Sat Dec 28 04:07:09 CST 2019 11 [root@Process-Mod ~]# ls 12 anaconda-ks.cfg date.txt ls.txt 13 [root@Process-Mod ~]# more ls.txt 14 bin 15 boot 16 dev 17 etc 18 home 19 lib 20 lib64 21 media 22 mnt 23 opt 24 proc 25 root 26 run 27 sbin 28 srv 29 sys 30 tmp 31 usr 32 var
三、刪除無用的計劃任務
1 [root@Process-Mod ~]# at now + 20min 2 at> ls > a.txt 3 at> <EOT> 4 job 11 at Sat Dec 28 04:28:00 2019 5 [root@Process-Mod ~]# at now + 22min 6 at> date > datebn.txt 7 at> <EOT> 8 job 12 at Sat Dec 28 04:31:00 2019 9 [root@Process-Mod ~]# at now + 23min 10 at> date 11 at> <EOT> 12 job 13 at Sat Dec 28 04:32:00 2019 13 [root@Process-Mod ~]# at -l //能夠看到已經添加3條計劃任務 14 11 Sat Dec 28 04:28:00 2019 a root 15 12 Sat Dec 28 04:31:00 2019 a root 16 13 Sat Dec 28 04:32:00 2019 a root 17 18 使用atrm 能夠刪除 計劃任務 19 [root@Process-Mod ~]# atrm 11 20 [root@Process-Mod ~]# at -l //11已經被刪除 21 12 Sat Dec 28 04:31:00 2019 a root 22 13 Sat Dec 28 04:32:00 2019 a root
常見問題
計劃任務服務
Can't open /var/run/atd.pid to signal atd. No atd running?
[root@Process-Mod ~]# systemctl start atd
[root@Process-Mod ~]# systemctl status atd