計划任務介紹
我們可以通過一些設置。來讓電腦定時提醒我們該做什么事了。或者我們提前設置好,告訴電腦你幾點做什么幾點做什么,這種我們就叫它定時任務。而遇到一些需要執行的事情或任務。我們也可以通過命令來告訴電腦一會臨時把這個工作給做一下
總結:在我們LINUX中,我們可以通過crontab和at這兩個東西來實現這些功能的
計划任務的作用:是做一些周期性的任務,在生產中的主要用來定期備份數據
計划任務的安排方式分兩種:
一種是定時性的,也就是例行。就是每隔一定的周期就要重復來做這個事情
一種是突發性的,就是這次做完了這個事,就沒有下一次了,臨時決定,只執行一次的任務
at和crontab這兩個命令:
at:它是一個可以處理僅執行一次就結束的指令
crontab:它是會把你指定的工作或任務,比如:腳本等,按照你設定的周期一直循環執行下去
at一次性計划任務使用
at語法格式:at 時間
1. 下載at程序
[root@ken ~]# yum install at -y
2. 啟動atd服務
[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定時任務的使用
語法:#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. 編寫計划任務
計划任務的規則語法格式,以行為單位,一行為一個計划:
分 時 日 月 周 需要執行的命令
執行的命令建議寫成絕對路徑的格式!
例如:如果想要每天的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
問題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 (月和周沒有指定)
案例:真實測試案例,每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
注意:在計划任務中,默認的最小單位就是分,不能再小了。
壓縮歸檔
- 掌握歸檔的定義:歸檔(archiving)就是將許多文件(或目錄)打包成一個文件。
- 了解歸檔的目的:歸檔的目的就是方便備份、還原及文件的傳輸操作。
- 掌握tar命令的功能:將多個文件(也可能包括目錄,因為目錄本身也是文件)放在一起存放到一個磁帶或磁盤歸檔文件中。並且將來可以根據需要只還原歸檔文件中的某些指定的文件。
- 掌握tar命令的常用選項:
- c:創建一個新的tar文件。
- t:列出tar文件中目錄的內容。
- x:從tar文件中抽取文件。
- f:指定歸檔文件或磁帶(也可能是軟盤)設備(一般都要選)。
- v:顯示所打包的文件的詳細信息,v是verbose的第1個字母。
- z:使用gzip壓縮算法來壓縮打包后的文件。
- j:使用bzip2壓縮算法來壓縮打包后的文件(文件壓縮的更小)
常用選項組合:
壓縮歸檔:czvf
解壓:xzvf
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