本章內(nèi)容:
- 進(jìn)程管理
- 獲取磁盤統(tǒng)計(jì)信息
- 掛載新磁盤
- 數(shù)據(jù)排序
- 數(shù)據(jù)歸檔
一、監(jiān)測(cè)進(jìn)程
1.1 探查進(jìn)程
當(dāng)程序在系統(tǒng)中運(yùn)行時(shí),它被稱為進(jìn)程(process),想要監(jiān)測(cè)這些進(jìn)程,就必須要熟悉
ps
命令。
-
ps
命令默認(rèn)只顯示運(yùn)行在當(dāng)前終端中屬于當(dāng)前用戶的那些進(jìn)程。 -
ps
常用命令選項(xiàng):
選項(xiàng) | 描述 |
---|---|
-A | 顯示所有進(jìn)程。 |
-w | 采用寬輸出格式,不限寬度顯示。 |
-au | 顯示較詳細(xì)的資訊。 |
-aux | 顯示所有包含其他使用者的進(jìn)程。 |
-ef |
-e :指定顯示系統(tǒng)中運(yùn)行的所有進(jìn)程 ;-f :擴(kuò)充輸出內(nèi)容以顯示一些有用的信息列。 |
- 應(yīng)用示例:
# 1.輸出系統(tǒng)中運(yùn)行的所有進(jìn)程的信息列。
[root@VM-8-11-centos ~]# ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 2022 ? 00:11:58 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root 2 0 0 2022 ? 00:00:06 [kthreadd]
root 4 2 0 2022 ? 00:00:00 [kworker/0:0H]
...
- UID:啟動(dòng)進(jìn)程的用戶。
- PID:進(jìn)程ID。
- PPID:父進(jìn)程的PID(如果該進(jìn)程是由另一個(gè)進(jìn)程啟動(dòng)的)。
- C:進(jìn)程生命期中的CPU利用率。
- STIME:進(jìn)程啟動(dòng)時(shí)的系統(tǒng)時(shí)間。
- TTY:進(jìn)程是從哪個(gè)終端設(shè)備啟動(dòng)的。
- TIME:運(yùn)行進(jìn)程的累計(jì)CPU時(shí)間。
- CMD:啟動(dòng)的程序名稱。
1.2 實(shí)時(shí)監(jiān)測(cè)進(jìn)程
ps
命令雖然在收集系統(tǒng)中運(yùn)行進(jìn)程的信息時(shí)非常有用,但它只能顯示某個(gè)特定時(shí)間點(diǎn)的信息。如果想觀察那些被頻繁換入和換出內(nèi)存的進(jìn)程,ps
命令就不太方便了。這正是top
命令的用武之地,它與ps
命令相似,top
命令也可以顯示進(jìn)程信息,但采用的是實(shí)時(shí)方式。
-
top
常用命令選項(xiàng):
選項(xiàng) | 描述 |
---|---|
-H | 顯示線程信息。 |
- 應(yīng)用示例:
# 1.監(jiān)測(cè)實(shí)時(shí)進(jìn)程。
[root@VM-8-11-centos ~]# top
top - 14:20:26 up 156 days, 3:15, 1 user, load average: 0.20, 0.19, 0.19
Tasks: 175 total, 1 running, 174 sleeping, 0 stopped, 0 zombie
%Cpu(s): 2.5 us, 1.5 sy, 0.0 ni, 95.6 id, 0.3 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 3880172 total, 168136 free, 3074520 used, 637516 buff/cache
KiB Swap: 0 total, 0 free, 0 used. 514776 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
657 root 20 0 1283140 65136 17360 S 2.0 1.7 3303:50 kubelet
4649 root 20 0 499340 270096 15228 S 1.7 7.0 3720:39 kube-apiserver
- 輸出的第一部分顯示的是系統(tǒng)概況:
- 第一行:顯示了當(dāng)前時(shí)間、系統(tǒng)的運(yùn)行時(shí)長、登錄的用戶數(shù)以及系統(tǒng)的平均負(fù)載(平均負(fù)載有3個(gè)值,分別是最近1分鐘、5分鐘、15分鐘的平均負(fù)載,值越大說明系統(tǒng)的負(fù)載越高,由于進(jìn)程短期的突發(fā)性活動(dòng),出現(xiàn)最近1分鐘的高負(fù)載值也很常見。但如果近15分鐘內(nèi)的平均負(fù)載都很高,就說明系統(tǒng)可能有問題了)。
- 第二行:顯示了進(jìn)程概況:多少進(jìn)程處于運(yùn)行、休眠、停止以及僵化狀態(tài)(僵化狀態(tài)指進(jìn)程已結(jié)束,但其父進(jìn)程沒有響應(yīng))。
-
第三行:顯示了CPU概況:
top
會(huì)根據(jù)進(jìn)程的屬主(用戶或是系統(tǒng))和進(jìn)程的狀態(tài)(運(yùn)行、空閑或等待)將CPU利用率分成幾類輸出。 - 隨后緊跟的兩行:詳細(xì)說明了系統(tǒng)內(nèi)存的狀態(tài)(前一行顯示了系統(tǒng)的物理內(nèi)存的狀態(tài),后一行顯示了系統(tǒng)交換空間的狀態(tài))。
- 輸出的最后一部分顯示了當(dāng)前處于運(yùn)行狀態(tài)的進(jìn)程的詳細(xì)列表(類似
ps
命令):- PID:進(jìn)程PID。
- USER:進(jìn)程屬主的用戶名。
- PR:進(jìn)程的優(yōu)先級(jí)。
- NI:進(jìn)程的謙讓度。
- VIRT:進(jìn)程占用的虛擬內(nèi)存總量。
- RES:進(jìn)程占用的物理內(nèi)存總量。
- SHR:進(jìn)程和其他進(jìn)程共享的內(nèi)存總量。
- S:進(jìn)程的狀態(tài)(D代表可中斷的休眠,R代表運(yùn)行,S代表休眠,T代表被跟蹤或停止,Z代表僵化)。
- %CPU:進(jìn)程使用的CPU時(shí)間比例。
- %MEM:進(jìn)程使用的可用物理內(nèi)存比例。
- TIME+:自進(jìn)程啟動(dòng)到目前為止所占用的CPU時(shí)間總量。
- COMMAND:進(jìn)程所對(duì)應(yīng)的命令行名稱,也就是啟動(dòng)的程序名。
1.3 結(jié)束進(jìn)程
用戶對(duì)
top
命令輸出有很大的控制權(quán),利用好該工具能找出占用系統(tǒng)大量資源的罪魁禍?zhǔn)?,?dāng)然,找到之后,下一步就是結(jié)束這些進(jìn)程。在 Linux 中有兩個(gè)命令可以向運(yùn)行中的進(jìn)程發(fā)出進(jìn)程信號(hào):kill
和pkill
。
- 使用說明:
-
kill
常用命令選項(xiàng):
選項(xiàng) | 描述 |
---|---|
-l <信息編號(hào)> | 若不加<信息編號(hào)>選項(xiàng),則 -l 參數(shù)會(huì)列出全部的信息名稱。 |
-1 (HUP) | 重新加載進(jìn)程。 |
-9 (KILL) | 殺死一個(gè)進(jìn)程。 |
-15 (TERM) | 正常停止一個(gè)進(jìn)程。 |
- 應(yīng)用示例:
# 1.強(qiáng)徹底殺死進(jìn)程。
[root@VM-8-11-centos ~]# kill -9 2526
-
kill
命令殺死指定進(jìn)程 PID,需要配合ps
使用,而pkill
直接對(duì)進(jìn)程對(duì)名字進(jìn)行操作(允許使用通配符),更加方便。 - 應(yīng)用示例:
# 1.該命令將殺掉所有名稱以`http`起始的進(jìn)程。
[root@VM-8-11-centos ~]# pkill http*
-
注意事項(xiàng):以
root
身份使用pkill
命令時(shí)要格外小心,避免使用通配符意外地將系統(tǒng)的重要進(jìn)程終止,導(dǎo)致文件系統(tǒng)損壞。
二、監(jiān)測(cè)磁盤空間
2.1 掛載存儲(chǔ)設(shè)備
Linux 文件系統(tǒng)會(huì)將所有的磁盤都并入單個(gè)虛擬目錄。在使用新的存儲(chǔ)設(shè)備之前,需要將其放在虛擬目錄中。這項(xiàng)工作稱為掛載(mounting)。
-
mount
常用命令選項(xiàng):
選項(xiàng) | 描述 |
---|---|
-o | 給文件系統(tǒng)添加特定的選項(xiàng)。 |
-o ro | 以只讀模式掛載。 |
-o rw | 以可讀寫模式掛載。 |
-o loop | 使用 loop 模式用來將一個(gè)檔案當(dāng)成硬盤分割掛上系統(tǒng)。 |
-o user、-o nouser | 使用者可以執(zhí)行 mount / umount 的動(dòng)作。 |
-o check=none | 掛載文件系統(tǒng)時(shí)不執(zhí)行完整性校驗(yàn)。 |
- 應(yīng)用示例:
# 1.將 /tmp/image.iso 這個(gè)光碟的 image 檔使用 loop 模式掛在 /mnt/cdrom 之下。
[root@VM-8-11-centos ~]# mount -o loop /tmp/image.iso /mnt/cdrom
移除可移動(dòng)設(shè)備時(shí),不能直接將設(shè)備拔下,應(yīng)該先卸載。
-
umount
常用命令選項(xiàng):
選項(xiàng) | 描述 |
---|---|
-v | 執(zhí)行時(shí)顯示詳細(xì)的信息。 |
- 應(yīng)用示例1:
# 1.通過設(shè)備名卸載。
[root@VM-8-11-centos ~]# umount -v /dev/sda1
- 應(yīng)用示例2:
# 1.通過掛載點(diǎn)卸載。
[root@VM-8-11-centos ~]# umount -v /mnt/mymount/
- 注意事項(xiàng):如果有任何程序正在使用設(shè)備上的文件,則系統(tǒng)將不允許卸載該設(shè)備。
2.2 使用 df 命令
有時(shí)需要知道在某臺(tái)設(shè)備上還有多少磁盤空間,
df
命令可以方便地查看所有已掛載磁盤的使用情況。
-
df
常用命令選項(xiàng):
選項(xiàng) | 描述 |
---|---|
-h | 以人類易讀的形式顯示磁盤(通常用M來替代兆字節(jié),用G來替代吉字節(jié))。 |
- 應(yīng)用示例:
# 1.設(shè)備磁盤使用情況。
[root@VM-8-11-centos ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs 1.9G 24K 1.9G 1% /dev/shm
tmpfs 1.9G 1.8M 1.9G 1% /run
...
-
注意事項(xiàng):
df
命令輸出值反映的是 Linux 系統(tǒng)認(rèn)為的當(dāng)前值。正在運(yùn)行的進(jìn)程有可能創(chuàng)建或刪除了某個(gè)文件,但尚未釋放該文件,則這個(gè)值是不會(huì)被計(jì)算進(jìn)閑置空間的。
2.3 使用 du 命令
df
命令,很容易發(fā)現(xiàn)哪個(gè)磁盤存儲(chǔ)空間不足。接下來,就是如何應(yīng)對(duì)這種情況,du
命令可以顯示某個(gè)特定目錄(默認(rèn)情況下是當(dāng)前目錄)的磁盤使用情況,有助于你快速判斷系統(tǒng)中是否存在磁盤占用“大戶”。
-
du
常用命令選項(xiàng):
選項(xiàng) | 描述 |
---|---|
-c | 顯示所有已列出文件的總大小。 |
-h | 按人類易讀格式輸出大小,分別用 K 表示千字節(jié)、M 表示兆字節(jié)、G 表示吉字節(jié)。 |
-s | 輸出每個(gè)參數(shù)的匯總信息。 |
- 應(yīng)用示例:
[root@VM-8-11-centos tmp]# pwd
/tmp
# 1.當(dāng)前目錄磁盤使用情況。
[root@VM-8-11-centos tmp]# du -sh
32K .
三、處理數(shù)據(jù)文件
3.1 數(shù)據(jù)排序
處理大量數(shù)據(jù)時(shí)需要對(duì)數(shù)據(jù)進(jìn)行排序,此時(shí)就會(huì)用到一個(gè)常用命令
sort
。
-
sort
命令會(huì)根據(jù)鎖指定的默認(rèn)語言的排序規(guī)則來對(duì)文本文件中的數(shù)據(jù)進(jìn)行排序。 -
sort
常用命令選項(xiàng):
選項(xiàng) | 描述 |
---|---|
[-k field1[ field2 ]] | 按照指定的列進(jìn)行排序 |
-n | 將字符串按數(shù)值意義排序 |
-r | 逆序排序(升序變降序) |
-t | 指定字段分隔符 |
- 應(yīng)用示例:
# 1.sort -nr:哪些文件占用磁盤空間最多。
[root@VM-8-11-centos resources]# du -sh * | sort -nr
92K io
24K META-INF
4.0K registry.conf
4.0K README-zh.md
4.0K README.md
4.0K logback.xml
4.0K file.conf.example
4.0K file.conf
3.2 數(shù)據(jù)搜索
經(jīng)常需要在大文件中查找位于文件中間部分某處的數(shù)據(jù)行,可以使用
grep
命令來幫助查找。
-
grep
命令會(huì)在輸入或指定文件中逐行搜索匹配指定模式的文本。 -
grep
常用命令選項(xiàng):
選項(xiàng) | 描述 |
---|---|
-v | 反向搜索。 |
-n | 顯示匹配指定模式的那些行的行號(hào)。 |
-c | 統(tǒng)計(jì)多少行。 |
-e | 指定多個(gè)匹配模式。 |
- 應(yīng)用示例:
# 1.當(dāng)前文本內(nèi)容。
[root@VM-8-11-centos tmp]# cat test.txt
111
222
333
hello
444
555
# 2.匹配存在的字符串有多少行。
[root@VM-8-11-centos tmp]# grep -c "hello" test.txt
1
# 3.匹配不存在的字符串。
[root@VM-8-11-centos tmp]# grep -c "hello111" test.txt
0
3.3 數(shù)據(jù)壓縮
Linux 包含多種文件壓縮工具。
工具名 | 文件拓展名 | 描述 |
---|---|---|
bzip2 | .bz2 | 采用 Burrows-Wheeler 塊排序文本壓縮算法和霍夫曼編碼。 |
compress | .Z | 最初的 Unix 文件壓縮工具。 |
gzip | .gz | GNU 壓縮工具,用 Lempel-Zivwelch 編碼。 |
xz | .xz | 日漸流行的通用壓縮工具。 |
zip | .zip | Windows 中 PKZIP 工具的 Unix 實(shí)現(xiàn)。 |
- 應(yīng)用示例:
# 1.當(dāng)前文本文件。
[root@VM-8-11-centos test]# ll
total 4
-rw-r--r-- 1 root root 0 May 7 16:47 myTest1.txt
-rw-r--r-- 1 root root 0 May 7 16:47 myTest.txt
# 2.使用 gzip 命令壓縮指定文件(可以指定多個(gè)文件名或是用通配符來一次性壓縮多個(gè)文件)。
[root@VM-8-11-centos test]# gzip my*
[root@VM-8-11-centos test]# ls -l my*
-rw-r--r-- 1 root root 32 May 7 16:47 myTest1.txt.gz
-rw-r--r-- 1 root root 31 May 7 16:47 myTest.txt.gz
3.4 數(shù)據(jù)歸檔
目前,Unix 和 Linux 中最流行的歸檔工具是
tar
命令。
-
tar
常用命令選項(xiàng):
選項(xiàng) | 描述 |
---|---|
-c | 創(chuàng)建新的 tar 歸檔文件。 |
-x | 從 tar 歸檔文件中提取文件。 |
-f | 將結(jié)果輸出到文件(或設(shè)備)。 |
-v | 在處理文件時(shí)顯示文件名。 |
-z | 將輸出傳給 gzip 命令進(jìn)行壓縮。 |
- 應(yīng)用示例1:
# 1.當(dāng)前目錄的文本文件。
[root@VM-8-11-centos tmp]# ll
total 0
-rw-r--r-- 1 root root 0 May 7 17:02 1.txt
-rw-r--r-- 1 root root 0 May 7 17:06 2.txt
# 2.創(chuàng)建歸檔文件。
[root@VM-8-11-centos tmp]# tar -cvf test.tar *.txt
1.txt
2.txt
# 3.歸檔結(jié)果。
[root@VM-8-11-centos tmp]# ll
total 12
-rw-r--r-- 1 root root 0 May 7 17:02 1.txt
-rw-r--r-- 1 root root 0 May 7 17:06 2.txt
-rw-r--r-- 1 root root 10240 May 7 17:07 test.tar
- 應(yīng)用示例2:
[root@VM-8-11-centos tmp]# ll
total 12
-rw-r--r-- 1 root root 0 May 7 17:02 1.txt
-rw-r--r-- 1 root root 0 May 7 17:06 2.txt
-rw-r--r-- 1 root root 10240 May 7 17:07 test.tar
# 1.當(dāng)前目錄下只保留一個(gè)tar包。
[root@VM-8-11-centos tmp]# rm -rf *.txt
[root@VM-8-11-centos tmp]# ll
total 12
-rw-r--r-- 1 root root 10240 May 7 17:07 test.tar
# 2.提取tar包內(nèi)容。
[root@VM-8-11-centos tmp]# tar -xvf test.tar
1.txt
2.txt
# 3.提取后結(jié)果。
[root@VM-8-11-centos tmp]# ll
total 12
-rw-r--r-- 1 root root 0 May 7 17:02 1.txt
-rw-r--r-- 1 root root 0 May 7 17:06 2.txt
-rw-r--r-- 1 root root 10240 May 7 17:07 test.tar
-
提示:在下載開源軟件時(shí)經(jīng)常會(huì)看到文件名以 .tgz 結(jié)尾,這是經(jīng) gzip 壓縮過的 tar 文件,可以用
tar
-zxvf filename.tgz 來提取其中的內(nèi)容。
四、結(jié)束語
“-------怕什么真理無窮,進(jìn)一寸有一寸的歡喜?!?mark hidden color="red">文章來源:http://www.zghlxwxcb.cn/news/detail-443578.html
微信公眾號(hào)搜索:餃子泡牛奶。文章來源地址http://www.zghlxwxcb.cn/news/detail-443578.html
到了這里,關(guān)于更多的 bash shell 命令的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!