瞭解一些 shell 的管理命令
更多精彩
- 更多技術博客,請移步 IT人才終生實訓與職業進階平臺 - 實訓在線
4.1 監測程序
- Linux 系統管理員面臨的最複雜任務之一就是 跟蹤運行在系統中的程序
4.1.1 ps 命令探查進程
- 當程序運行在 Linux 中時,被稱爲 進程( Process )
ps
命令可以輸出運行在系統上的所有程序的進程信息- 默認情況下,
ps
命令只會顯示當前控制檯下,當前用戶運行的所有進程,如下圖- zsh shell 就是運行在當前系統的一個程序
- PID 是進程 ID( Process ID )
- TTY 是終端代號
- TIME 是進程已經使用的 CPU 時間
- CMD 是進程名稱
4.1.1.1 ps 命令支持的三種參數風格
- Unix 風格,在參數前加 單破折號
- 一般使用這個風格就可以了
- BSD 風格,參數前 沒有破折號
- GNU 風格,在參數前加 雙破折號
4.1.1.2 ps 命令的參數使用
ps
命令光類型就有三種,每種類型擁有的參數都很多,所以要記住ps
命令的所有參數是完全沒必要的- 只需要記住常用場景下的幾個固定組合即可
4.1.1.3 ps -ef 查看指定名稱的進程完整信息
- 使用
ps -ef | grep processName
就可以看到指定名稱的進程完整信息,如下圖- 通過該命令查看到了 activemq 的進程信息
-e
指令顯示所有運行在系統上的繼承-f
指令對輸出內容進行擴展,顯示更完整的信息| grep
則是通過管道對所有進程進行過濾,只顯示和 activemq 有關的信息
4.1.2 top 命令實時監測進程
top
命令可以實時的顯示進程信息,如下圖- 在終端輸入
top
後,會進入到如下界面,整個界面的各種參數會一直變化,表示在實時監測系統進程 - 按 q 或者 Ctrl+C 即可退出
- 在終端輸入
- 上圖是 macOS 中顯示的界面,下圖是 CentOS 中顯示的界面
4.1.3 kill 命令結束進程
4.1.3.1 Linux 中進程通信方式
- 在 Linux 中進程之間通過信號實現通信
- 進程的信號是預定義好的消息,進程能識別這個信號並進行相應的操作判斷:忽略或反饋
- 進程如何處理信號由開發人員通過編程決定
- 大多數編寫完善的程序都能接收和處理標準的 Unix 進程信號,Linux 沿用了 Unix 進行進程間通信的方式
- Linux 進程信號如下圖
4.1.3.2 kill 命令的使用
kill
命令可以通過進程 ID 給進程發信號- 默認情況下,會向指定的進程發送一個 TERM 信號,但如果進程處於無響應狀態,則不會終止
- 而且只能對當前用戶擁有權限的進程發起信號,否則會拋出
Operation not premitted
的信息 - 日常使用中,最常用的場景是先通過
ps
命令獲取對應進程的 PID ,然後再使用kill
命令殺掉進程,如下圖- 由於殺掉進程後不會有任何輸出,所以還需要使用
ps
命令再查一遍,才能知道結果 -9
就表示無條件終止進程
- 由於殺掉進程後不會有任何輸出,所以還需要使用
4.1.3.3 killall 命令的使用
kill
命令的缺陷在於只能通過 PID 來對進程發信號killall
命令則可以直接通過進程名稱給進程發信號,還支持通配符- 但非常容易誤傷,不推薦使用
4.2 監測磁盤空間
4.2.1 掛載存儲媒體
- 掛載( Mounting ) 是指在使用新的存儲媒體之前,需要將其放到虛擬目錄中
4.2.1.1 mount 命令實現掛載媒體
mount
命令用於掛載媒體- 默認情況下,
mount
命令會輸出當前系統上掛載的設備列表,如下圖
- 只有通過 root 用戶登錄,或使用
sudo
命令作爲前綴,才能手動在虛擬目錄中掛載設備 - 掛載設備的完整命令是
mount -t type device directory
type
指磁盤的文件系統類型device
指存儲設備的位置directory
指掛載點在虛擬目錄中的位置
4.2.1.2 umount 命令實現卸載媒體
- 在 Linux 中移除一個可移動設備的方式叫 卸載
umount [ directory | device ]
命令可用於移除一個目錄或設備- 但是如果有任何程序正在使用設備上的文件,就無法完成卸載
4.2.2 df 命令查看磁盤空間
- 使用
df
命令可以查看系統中所有已掛載磁盤的使用情況,如下圖- 只顯示有數據的已掛載磁盤
- 只顯示有數據的已掛載磁盤
4.2.2.1 -h 參數優化磁盤空間顯示效果
df
命令默認使用字節來顯示磁盤的空間大小- 使用
df -h
可以將空間大小的單位上升到 M ,如果數值足夠大,也會自動上升到 G ,如下圖
4.2.3 du 命令顯示指定目錄使用情況
du
命令可以顯示指定目錄的磁盤使用情況- 默認情況下會 顯示當前目錄下,所有的文件、目錄和子目錄的磁盤使用情況 ,如下圖
- 儘量不要在層級太高的目錄使用,否則就會輸出一堆數據
- 最前面的數值默認顯示的是目錄或文件佔用的磁盤塊數
4.2.3.1 -h 指令優化數值顯示效果
du -h
可以將文件或目錄佔用的空間大小用 K 、M 或 G 代替,如下圖
4.2.3.2 -s 指令統計當前目錄的總大小
du -sh
可以統計當前目錄的總大小,同時使用更易讀的格式進行顯示,如下圖
4.3 處理數據文件
4.3.1 sort 命令排序數據
sort
命令可以對數據進行排序- 默認情況下,
sort
命令會按照 默認語言的排序規則 對文件中的數據行進行排序,如下圖- 默認語言的排序規則,一般指的是按照字符順序進行排序
- 默認語言的排序規則,一般指的是按照字符順序進行排序
4.3.1.1 -n 指令實現按值排序
sort -n
命令可以讓sort
命令識別文件中的數字,實現按數值排序,如下圖
4.3.2 grep 命令搜索數據
grep
命令會在指定的文件中查找包含指定字符的數據行,如下圖
4.3.2.1 -v 指令實現反向搜索
grep -v
命令可以實現反向搜索,就是顯示除了被匹配字符的其他數據行,如下圖
4.3.2.2 -n 指令顯示數據行的行號
grep -n
命令可以實現在顯示匹配數據行的同時,將對應的行號顯示出來,如下圖
4.3.2.3 -c 指令顯示匹配數據行的總數
grep -c
命令可以實現統計匹配數據行的總數,而不是顯示每個數據行的數據,如下圖
4.3.2.4 -e 指令指定多個匹配字符
grep -e
命令可以實現同時匹配多個字符,如下圖
- 如果在匹配多個字符的同時,還希望能顯示行號,則需要按照如下方式編寫
-n
指令不能直接跟在-e
後面,如-en
,這樣就會拋出語法錯誤
4.3.2.5 grep 的一些擴展解釋
grep
命令支持最基本的 Unix 風格的正則表達式,用於擴充匹配模式egrep
命令是grep
命令的衍生版本,支持 POSIX 擴展正則表達式- POSIX 擴展正則表達式擁有更多的可以用於指定匹配模式的字符
fgrep
命令也是grep
命令的衍生版本,支持將匹配到的數據放入到文件中
4.3.3 壓縮數據
- 壓縮文件指的就是 zip 文件 ,可以通過壓縮將大型文件變成相對較小的文件
- 下圖中列出 Linux 中的文件壓縮工具
4.3.3.1 使用 gzip 對文件進行操作
gzip fileName
可以對文件進行壓縮,gunzip fileName
可以對壓縮包進行解壓,如下圖
gzcat fileName
可以查看壓縮包的內容,如下圖
4.3.4 tar 命令歸檔數據
tar
命令是 Unix 和 Linux 上使用最廣泛的歸檔工具tar
命令最開始用於將文件歸檔到磁帶設備上,同時也能將輸出內容寫入到文件中,目前已經被用來做數據歸檔tar function [ options ] object1 object2 ...
是tar
命令的完整語法function
表示命令將要做什麼options
表示在做什麼的同時能夠指定一些參數實現特定行爲
function
的可選參數如下
options
的可選參數如下
4.3.4.1 舉幾個實用例子
tar -cvf
命令實現在創建新的歸檔文件的同時顯示歸檔過程,以及輸出結果,如下圖
tar -tf
命令實現查看歸檔文件內容,但不解壓文件,如下圖
tar -xvf
命令實現解壓歸檔文件,並輸出結果,如下圖
4.4 小結
ps
命令可以看到哪些應用在運行top
命令可以看到哪些應用在運行的同時佔用了多少資源mount
命令可以實現掛載設備,但需要 root 權限umount
命令可以實現卸載設備,也需要 root 權限sort
命令可以對文件的內容進行排序grep
命令可以對文件的內容進行搜索tar
命令可以對文件進行解壓縮