Linux計划任務


計划任務的安排方式分兩種:

一種是定時性的,也就是例行。就是每隔一定的周期就要重復來做這個事情

一種是突發性的,就是這次做完了這個事,就沒有下一次了,臨時決定,只執行一次的任務

at和crontab這兩個命令:

at:它是一個可以處理僅執行一次就結束的指令

crontab:它是會把你指定的工作或任務,比如:腳本等,按照你設定的周期一直循環執行下去。

 

at一次性計划任務使用 

at語法格式:at 時間

  1. 下載at程序

# yum install at -y

  1. 啟動atd服務

# systemctl restart atd

# ps aux | grep atd

root 1166 0.0 0.1 25904 944 ? Ss 17:52 0:00 /usr/sbin/at -f root 1168 0.0 0.1 112704 956 pts/0 S+ 17:52 0:00 grep –color=auto atd

  3.設置at計划任務

 [root@localhost ~]# at 15:20
at> touch /home/he/tttt.txt
at> <EOT>                  #按ctrl d 保存
job 3 at Mon May 13 15:20:00 2019
[root@localhost ~]# atq           #查看計划任務
3 Mon May 13 15:20:00 2019 a root

[root@localhost ~]# ls /home/he
b  e1.txt  e.txt  [-p]  ss.txt  text  tttt.txt  yunwei  yw.txt

已經在計划時間執行了計划任務。

  4、刪除計划任務

[root@localhost ~]# at 16:11
at> touch /home/he/ttt.txt
at> <EOT>
job 2 at Mon May 13 16:11:00 2019
[root@localhost ~]# atq
2 Mon May 13 16:11:00 2019 a root            #獲取任務編號。
[root@localhost ~]# atrm 2
[root@localhost ~]# atq

[root@localhost ~]#

現在你會發現已經沒有這個任務編號了。

  5.at計划任務的特殊寫法

[root@ken ~]# at 20:00 2018-10-1 在某天

[root@ken ~]# at now +10min 在 10分鍾后執行

[root@ken ~]# at 17:00 tomorrow 明天下午5點執行

[root@ken ~]# at 6:00 pm +3 days 在3天以后的下午6點執行

 

crontab定時任務的使用

語法:#crontab -u  -e

常用選項:

-l:list,列出指定用戶的計划任務列表

-e:edit,編輯指定用戶的計划任務列表

-u:user,指定的用戶名,如果不指定,則表示當前用戶

-r:remove,刪除指定用戶的計划任務列表

查看進程是否啟動:

[root@localhost ~]# ps aux|grep crond
root      1020  0.0  0.1 126220  1220 ?        Ss   15:01   0:00 /usr/sbin/crond -n
root      5601  0.0  0.0 112664   972 pts/0    S+   15:30   0:00 grep --color=auto crond

查看計划任務:

[root@localhost ~]# crontab -l
no crontab for root

編寫計划任務:

計划任務的規則語法格式,以行為單位,一行為一個計划:

分 時 日 月 周 需要執行的命令

執行的命令建議寫成絕對路徑的格式!

取值范圍(常識):

分:0~59

時:0~23

日:1~31

月:1~12

周:0~7,0和7表示星期天

四個符號:

*:表示取值范圍中的每一個數字

-:做連續區間表達式的,要想表示1~7,則可以寫成:1-7

/:表示每多少個,例如:想每10分鍾一次,則可以在分的位置寫:*/10

,:表示多個取值,比如想在1點,2點6點執行,則可以在時的位置寫:1,2,6

[root@localhost ~]# crontab -e

輸入上面的命令編輯定時任務,相當於打開了一個vim編輯器。

問題1:每月1、10、22日的4:45重啟network服務

45  4  1,10,22  *  *  systemctl restart network (每月,周沒有制定)

問題2:每周六、周日的1:10重啟network服務

10  1  *  *  6,7  systemctl restart network   (日、月沒有指定)

問題3:每天18:00至23:00之間每隔30分鍾重啟network服務

*/30  18-23  *  *  *  systemctl restart network  ( 日 月 周 沒有指定)

問題4:每隔兩天的上午8點到11點的第3和第15分鍾執行一次重啟

3,15  8-11  */2  *  *  reboot   (月和周沒有指定)

如果要刪除命令:

[root@localhost ~]# crontab -r
[root@localhost ~]# crontab -l
no crontab for root

案例:真實測試案例,每1分鍾往root家目錄中的ken.txt中輸一個123,為了看到效果使用追加輸出

[root@ken ~]# crontab -e #編寫計划任務

* * * * * echo “123” >> /root/ken.txt

[root@ken ~]# tail -f ken.txt #查看計划任務執行結果 123 123


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM