咱們能夠經過一些設置。來讓電腦定時提醒咱們該作什麼事了。或者咱們提早設置好,告訴電腦你幾點作什麼幾點作什麼,這種咱們就叫它定時任務。而遇到一些須要執行的事情或任務。咱們也能夠經過命令來告訴電腦一會臨時把這個工做給作一下算法
總結:在咱們LINUX中,咱們能夠經過crontab和at這兩個東西來實現vim
計劃任務的做用:是作一些週期性的任務,在生產中的主要用來按期備份數據測試
計劃任務的安排方式分兩種:spa
一種是定時性的,也就是例行。就是每隔必定的週期就要重複來作這個事情rest
一種是突發性的,就是此次作完了這個事,就沒有下一次了,臨時決定,只執行一次的任務code
at和crontab這兩個命令:blog
at:它是一個能夠處理僅執行一次就結束的指令進程
crontab:它是會把你指定的工做或任務,好比:腳本等,按照你設定的週期一直循環執行下去crontab
at語法格式:at 時間ip
at中編輯,刪除打錯的字,Ctrl+back(刪除),Ctrl+d(保存)
1. 下載at程序
[root@ken ~]# yum install at -y
2. 啓動atd服務,啓動程序at,通常都是後面+d(daemon),atd表示啓動at
[root@ken ~]# systemctl restart atd [root@ken ~]# 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@ken ~]# at 10:00 #若是是上午時間,後面加上am,好比9:20am at> touch /tmp/test1 #輸入你要執行的命令 at> <EOT> #按ctrl+d保存 job 1 at Fri Mar 1 10:00:00 2019 [root@ken ~]# at -l #查看計劃任務 1 Fri Mar 1 10:00:00 2019 a root [root@ken ~]# atq #查看計劃任務 1 Fri Mar 1 10:00:00 2019 a root
4. 刪除計劃任務atrm
[root@ken ~]# at -l #第一步查看計劃任務,獲取前面編號 1 Fri Mar 1 10:00:00 2019 a root [root@ken ~]# atrm 1 #刪除計劃任務加上編號 [root@ken ~]# at -l #再次查看計劃任務發現已經刪除
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 -u -e
經常使用選項:
-l:list,列出指定用戶的計劃任務列表
-e:edit,編輯指定用戶的計劃任務列表
-u:user,指定的用戶名,若是不指定,則表示當前用戶
-r:remove,刪除指定用戶的計劃任務列表
1. 查看進程是否啓動
[root@ken ~]# ps aux | grep crond root 621 0.0 0.3 126284 1600 ? Ss 17:46 0:00 /usr/sbin/crond -n root 1194 0.0 0.1 112704 956 pts/0 S+ 18:05 0:00 grep --color=auto crond
2. 查看計劃任務
[root@ken ~]# crontab -l no crontab for root
3. 編寫計劃任務
計劃任務的規則語法格式,以行爲單位,一行爲一個計劃:
分 時 日 月 周 須要執行的命令
執行的命令建議寫成絕對路徑的格式!
若是分鐘那個位置,顯示的是*,就表示計劃任務是每分鐘執行一次計劃任務,也就是一個小時執行60次。
若是須要每隔n分鐘執行一次計劃任務,那就是/n取代第一顆*。
小訣竅:尋找systemctl的絕對路徑時候,由於編輯crontab計劃任務時候,就是經過vim打開文件,進行編輯,故而咱們可使用!which來進行查找你所用的命令的絕對路徑。
例如:若是想要天天的0點0分執行reboot指令,則能夠寫成
0 0 * * * reboot
取值範圍(常識):
分:0~59
時:0~23
日:1~31
月:1~12
周:0~7,0和7表示星期天
四個符號:
*:表示取值範圍中的每個數字
-:作連續區間表達式的,要想表示1~7,則能夠寫成:1-7
/:表示每多少個,例如:想每10分鐘一次,則能夠在分的位置寫:*/10
,:表示多個取值,好比想在1點,2點6點執行,則能夠在時的位置寫:1,2,6
平常常常須要操做的是進行備份,將某個文件備份到另外一個文件夾中,此時通常備註爲時間+,因此常用date命令。這時候須要注意date命令中的%,由於%在vim中是有特殊的含義,%表示的是消除後面的全部,所以,這時候須要用\進行轉義以下圖。
若是不加\,以下圖出現錯誤
問題1:每個月一、十、22日的4:45重啓network服務
45 4 1,10,22 * * systemctl restart network (每個月,周沒有制定)
問題2:每週6、週日的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 (月和周沒有指定)
案例:真實測試案例,每1分鐘往root家目錄中的ken.txt中輸一個123,爲了看到效果使用追加輸出
[root@ken ~]# crontab -e #編寫計劃任務 * * * * * echo "123" >> /root/ken.txt [root@ken ~]# tail -f ken.txt #查看計劃任務執行結果 123 123
4. 刪除計劃任務
[root@ken ~]# crontab -l * * * * * echo "123" >> /root/ken.txt [root@ken ~]# crontab -r [root@ken ~]# crontab -l no crontab for root
注意:在計劃任務中,默認的最小單位就是分,不能再小了。
經常使用選項組合:
壓縮歸檔:czvf
解壓:xzvf
v是顯示操做進程的,通常能夠不須要。也就是直接壓縮文檔是czf,解壓xzf
zip通常用unzip進行解壓,gz通常用gunzip解壓,tar.gz用tar xf 進行解壓
1. 壓縮歸檔
[root@ken ~]# mkdir test [root@ken ~]# cd test [root@ken test]# touch {1..10}.txt [root@ken test]# tar czvf test.tar.gz ./* ./10.txt ./1.txt ./2.txt ./3.txt ./4.txt ./5.txt ./6.txt ./7.txt ./8.txt ./9.txt [root@ken test]# ls 10.txt 2.txt 4.txt 6.txt 8.txt test.tar.gz 1.txt 3.txt 5.txt 7.txt 9.txt
2. 解壓
[root@ken test]# rm -rf {1..10}.txt [root@ken test]# ls test.tar.gz [root@ken test]# tar xzvf test.tar.gz ./10.txt ./1.txt ./2.txt ./3.txt ./4.txt ./5.txt ./6.txt ./7.txt ./8.txt ./9.txt [root@ken test]# ls 10.txt 2.txt 4.txt 6.txt 8.txt test.tar.gz 1.txt 3.txt 5.txt 7.txt 9.txt
能夠加上-C制定解壓到那個目錄
[root@ken test]# tar xvf test.tar.gz -C /tmp ./10.txt ./1.txt ./2.txt ./3.txt ./4.txt ./5.txt ./6.txt ./7.txt ./8.txt ./9.txt [root@ken test]# ls /tmp 10.txt 2.txt 4.txt 6.txt 8.txt ks-script-8jIJc_ yum.log 1.txt 3.txt 5.txt 7.txt 9.txt vmware-root