1. 程式人生 > >sort命令和crontab命令

sort命令和crontab命令

一、sort,以行為單位對多行資料進行排序

常用的引數及作用

引數 作用
-n 數值排序
-r 降序
-t 欄位分隔符
-k 以哪個欄位為關鍵字進行排序
-u 排序後相同的行只顯示一次
-f 排序時忽略字元大小寫

sort練習:

(sort原理:sort將檔案的每一行作為一個單位,相互比較,比較原則是從首字元向後,依次按ASCII碼值進行比較,最後將他們按升序輸出。)
1、建立一個檔案b1,在檔案b1裡面輸入任意數值(打亂輸入),利用引數-u來進行升序排序。
在這裡插入圖片描述


2、對剛才建立的檔案b1進行降序排序(-r)
直接-r之後的排序
在這裡插入圖片描述
注意:在圖中8比67小但排在了前面,出現這種情況是由於排序程式將這些數字按字元來排序了,排序程式會先比較8和6,顯然6小,所以就將8放在67前面。這也是sort的一貫作風。

所以要改變這種現狀,就要使用-n選項,來告訴sort,“要以數值來排序”!

在這裡插入圖片描述
3、-u 在排序後輸出時去掉重複行
eg:建立一個檔案b2 在裡面輸入內容,檢視並輸出
在這裡插入圖片描述
4、-f 忽略大小寫
在這裡插入圖片描述
5、-k 和 -t 的用法
eg:建立一個檔案b3,在b3裡面輸入如下內容
在這裡插入圖片描述
按照第二列的數值來進行排序
在這裡插入圖片描述
6、由於sort預設是把結果輸出到標準輸出,需要用重定向才能將結果寫入檔案另一個檔案中。(eg:sort -f b2 > b4)
在這裡插入圖片描述

但是要想將排序後的結果輸入到原始檔中,則需要 需要用-o 引數 把排序結果輸出到原檔案中
在這裡插入圖片描述
7 其他的sort常用選項

-c會檢查檔案是否已排好序,如果亂序,則輸出第一個亂序的行的相關資訊,最後返回1

-C會檢查檔案是否已排好序,如果亂序,不輸出內容,僅返回1

-M會以月份來排序,比如JAN小於FEB等等

-b會忽略每一行前面的所有空白部分,從第一個可見字元開始比較。

二、crontab 命令

  • Linux系統下一個自動執行指定任務的程式(計劃任務),使用Crontab命令來新增任務
  • crontab 配置檔案(more /etc/crontab)
    在這裡插入圖片描述
  • 常用引數
引數 描述
-u user 用來設定某個使用者的crontab服務
-l 顯示某個使用者的crontab檔案內容,如果不指定使用者,則表示顯示當前使用者的crontab檔案內容
-e 編輯某個使用者的crontab檔案內容。如果不指定使用者,則表示編輯當前使用者的crontab檔案
-i 在刪除使用者的crontab檔案時給確認提示
-r 從/var/spool/cron目錄中刪除某個使用者的crontab檔案,如果不指定使用者,則預設刪除當前使用者的crontab檔案

crontab練習:
1每1分鐘執行一次對/etc目錄的備份,備份至/backup目錄中,儲存檔名格式為bak_etc_2018-01-01
1.1、建立指令碼檔案(yy.sh)並編輯
在這裡插入圖片描述
1.2、給 yy.sh 指令碼檔案可執行許可權
(chmod u+x yy.sh
1.3、執行指令碼檔案並檢視
在這裡插入圖片描述
1.4、設定crontab (crontab -e)
在這裡插入圖片描述
1.5、再檢視目錄/backup 對比一下時間
在這裡插入圖片描述
在這裡插入圖片描述
2. 每1分鐘取當前系統/proc/meminfo檔案中的所有以S開頭的資訊至/backup/memory檔案中
2.1建立指令碼檔案(tt.sh)並編輯
在這裡插入圖片描述
2.2 給 tt.sh 指令碼檔案可執行許可權
(chmod u+x tt.sh
2.3執行指令碼檔案並檢視
在這裡插入圖片描述
2.4設定crontab (crontab -e)
在這裡插入圖片描述
2.5再檢視檔案/backup/memory 對比一下
在這裡插入圖片描述
檔案/backup/memory 裡的內容隨著時間不斷增加