linux定時任務 at 和crontab

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

相關文章
相關標籤/搜索