Linux 命令行與 shell 腳本編程大全 4 更多的 bash shell 命令

瞭解一些 shell 的管理命令

更多精彩

4.1 監測程序

  1. Linux 系統管理員面臨的最複雜任務之一就是 跟蹤運行在系統中的程序

4.1.1 ps 命令探查進程

  1. 當程序運行在 Linux 中時,被稱爲 進程( Process )
  2. ps 命令可以輸出運行在系統上的所有程序的進程信息
  3. 默認情況下,ps 命令只會顯示當前控制檯下,當前用戶運行的所有進程,如下圖
    • zsh shell 就是運行在當前系統的一個程序
    • PID 是進程 ID( Process ID )
    • TTY 是終端代號
    • TIME 是進程已經使用的 CPU 時間
    • CMD 是進程名稱

4.1.1.1 ps 命令支持的三種參數風格

  1. Unix 風格,在參數前加 單破折號
    • 一般使用這個風格就可以了
  2. BSD 風格,參數前 沒有破折號
  3. GNU 風格,在參數前加 雙破折號

4.1.1.2 ps 命令的參數使用

  1. ps 命令光類型就有三種,每種類型擁有的參數都很多,所以要記住 ps 命令的所有參數是完全沒必要的
  2. 只需要記住常用場景下的幾個固定組合即可

4.1.1.3 ps -ef 查看指定名稱的進程完整信息

  1. 使用 ps -ef | grep processName 就可以看到指定名稱的進程完整信息,如下圖
    • 通過該命令查看到了 activemq 的進程信息
    • -e 指令顯示所有運行在系統上的繼承
    • -f 指令對輸出內容進行擴展,顯示更完整的信息
    • | grep 則是通過管道對所有進程進行過濾,只顯示和 activemq 有關的信息

4.1.2 top 命令實時監測進程

  1. top 命令可以實時的顯示進程信息,如下圖
    • 在終端輸入 top 後,會進入到如下界面,整個界面的各種參數會一直變化,表示在實時監測系統進程
    • q 或者 Ctrl+C 即可退出
  2. 上圖是 macOS 中顯示的界面,下圖是 CentOS 中顯示的界面

4.1.3 kill 命令結束進程

4.1.3.1 Linux 中進程通信方式

  1. 在 Linux 中進程之間通過信號實現通信
  2. 進程的信號是預定義好的消息,進程能識別這個信號並進行相應的操作判斷:忽略或反饋
  3. 進程如何處理信號由開發人員通過編程決定
  4. 大多數編寫完善的程序都能接收和處理標準的 Unix 進程信號,Linux 沿用了 Unix 進行進程間通信的方式
  5. Linux 進程信號如下圖

4.1.3.2 kill 命令的使用

  1. kill 命令可以通過進程 ID 給進程發信號
  2. 默認情況下,會向指定的進程發送一個 TERM 信號,但如果進程處於無響應狀態,則不會終止
  3. 而且只能對當前用戶擁有權限的進程發起信號,否則會拋出 Operation not premitted 的信息
  4. 日常使用中,最常用的場景是先通過 ps 命令獲取對應進程的 PID ,然後再使用 kill 命令殺掉進程,如下圖
    • 由於殺掉進程後不會有任何輸出,所以還需要使用 ps 命令再查一遍,才能知道結果
    • -9 就表示無條件終止進程

4.1.3.3 killall 命令的使用

  1. kill 命令的缺陷在於只能通過 PID 來對進程發信號
  2. killall 命令則可以直接通過進程名稱給進程發信號,還支持通配符
  3. 但非常容易誤傷,不推薦使用

4.2 監測磁盤空間

4.2.1 掛載存儲媒體

  1. 掛載( Mounting ) 是指在使用新的存儲媒體之前,需要將其放到虛擬目錄中

4.2.1.1 mount 命令實現掛載媒體

  1. mount 命令用於掛載媒體
  2. 默認情況下,mount 命令會輸出當前系統上掛載的設備列表,如下圖
  3. 只有通過 root 用戶登錄,或使用 sudo 命令作爲前綴,才能手動在虛擬目錄中掛載設備
  4. 掛載設備的完整命令是 mount -t type device directory
    • type 指磁盤的文件系統類型
    • device 指存儲設備的位置
    • directory 指掛載點在虛擬目錄中的位置

4.2.1.2 umount 命令實現卸載媒體

  1. 在 Linux 中移除一個可移動設備的方式叫 卸載
  2. umount [ directory | device ] 命令可用於移除一個目錄或設備
  3. 但是如果有任何程序正在使用設備上的文件,就無法完成卸載

4.2.2 df 命令查看磁盤空間

  1. 使用 df 命令可以查看系統中所有已掛載磁盤的使用情況,如下圖
    • 只顯示有數據的已掛載磁盤

4.2.2.1 -h 參數優化磁盤空間顯示效果

  1. df 命令默認使用字節來顯示磁盤的空間大小
  2. 使用 df -h 可以將空間大小的單位上升到 M ,如果數值足夠大,也會自動上升到 G ,如下圖

4.2.3 du 命令顯示指定目錄使用情況

  1. du 命令可以顯示指定目錄的磁盤使用情況
  2. 默認情況下會 顯示當前目錄下,所有的文件、目錄和子目錄的磁盤使用情況 ,如下圖
    • 儘量不要在層級太高的目錄使用,否則就會輸出一堆數據
    • 最前面的數值默認顯示的是目錄或文件佔用的磁盤塊數

4.2.3.1 -h 指令優化數值顯示效果

  1. du -h 可以將文件或目錄佔用的空間大小用 K 、M 或 G 代替,如下圖

4.2.3.2 -s 指令統計當前目錄的總大小

  1. du -sh 可以統計當前目錄的總大小,同時使用更易讀的格式進行顯示,如下圖

4.3 處理數據文件

4.3.1 sort 命令排序數據

  1. sort 命令可以對數據進行排序
  2. 默認情況下,sort 命令會按照 默認語言的排序規則 對文件中的數據行進行排序,如下圖
    • 默認語言的排序規則,一般指的是按照字符順序進行排序

4.3.1.1 -n 指令實現按值排序

  1. sort -n 命令可以讓 sort 命令識別文件中的數字,實現按數值排序,如下圖

4.3.2 grep 命令搜索數據

  1. grep 命令會在指定的文件中查找包含指定字符的數據行,如下圖

4.3.2.1 -v 指令實現反向搜索

  1. grep -v 命令可以實現反向搜索,就是顯示除了被匹配字符的其他數據行,如下圖

4.3.2.2 -n 指令顯示數據行的行號

  1. grep -n 命令可以實現在顯示匹配數據行的同時,將對應的行號顯示出來,如下圖

4.3.2.3 -c 指令顯示匹配數據行的總數

  1. grep -c 命令可以實現統計匹配數據行的總數,而不是顯示每個數據行的數據,如下圖

4.3.2.4 -e 指令指定多個匹配字符

  1. grep -e 命令可以實現同時匹配多個字符,如下圖
  2. 如果在匹配多個字符的同時,還希望能顯示行號,則需要按照如下方式編寫
    • -n 指令不能直接跟在 -e 後面,如 -en ,這樣就會拋出語法錯誤

4.3.2.5 grep 的一些擴展解釋

  1. grep 命令支持最基本的 Unix 風格的正則表達式,用於擴充匹配模式
  2. egrep 命令是 grep 命令的衍生版本,支持 POSIX 擴展正則表達式
    • POSIX 擴展正則表達式擁有更多的可以用於指定匹配模式的字符
  3. fgrep 命令也是 grep 命令的衍生版本,支持將匹配到的數據放入到文件中

4.3.3 壓縮數據

  1. 壓縮文件指的就是 zip 文件 ,可以通過壓縮將大型文件變成相對較小的文件
  2. 下圖中列出 Linux 中的文件壓縮工具

4.3.3.1 使用 gzip 對文件進行操作

  1. gzip fileName 可以對文件進行壓縮,gunzip fileName 可以對壓縮包進行解壓,如下圖
  2. gzcat fileName 可以查看壓縮包的內容,如下圖

4.3.4 tar 命令歸檔數據

  1. tar 命令是 Unix 和 Linux 上使用最廣泛的歸檔工具
  2. tar 命令最開始用於將文件歸檔到磁帶設備上,同時也能將輸出內容寫入到文件中,目前已經被用來做數據歸檔
  3. tar function [ options ] object1 object2 ...tar 命令的完整語法
    • function 表示命令將要做什麼
    • options 表示在做什麼的同時能夠指定一些參數實現特定行爲
  4. function 的可選參數如下
  5. options 的可選參數如下

4.3.4.1 舉幾個實用例子

  1. tar -cvf 命令實現在創建新的歸檔文件的同時顯示歸檔過程,以及輸出結果,如下圖
  2. tar -tf 命令實現查看歸檔文件內容,但不解壓文件,如下圖
  3. tar -xvf 命令實現解壓歸檔文件,並輸出結果,如下圖

4.4 小結

  1. ps 命令可以看到哪些應用在運行
  2. top 命令可以看到哪些應用在運行的同時佔用了多少資源
  3. mount 命令可以實現掛載設備,但需要 root 權限
  4. umount 命令可以實現卸載設備,也需要 root 權限
  5. sort 命令可以對文件的內容進行排序
  6. grep 命令可以對文件的內容進行搜索
  7. tar 命令可以對文件進行解壓縮
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章