??一、概述
上篇文章 bash shell 基礎(chǔ)命令 中,介紹了一些與目錄、文件相關(guān)的 shell 命令,本文繼續(xù)介紹其他與進(jìn)程、磁盤、排序、歸檔相關(guān)的命令,讀者可以在自己的Linux系統(tǒng)下,實(shí)操這些命令,進(jìn)而收悉并掌握這些命令。本文是一篇學(xué)習(xí)筆記,很多內(nèi)容是參考了《Linux命令行與shell腳本編程大全-第四版》。
??二、進(jìn)程相關(guān)命令
在 Linux 系統(tǒng)中,最難纏的一項(xiàng)任務(wù)是跟蹤運(yùn)行在系統(tǒng)中的程序,尤其是圖形化桌面集成了大量的程序來(lái)生成一個(gè)完整的桌面環(huán)境。系統(tǒng)中始終運(yùn)行著大量的程序。
?2.1 ps 命令 —— 查看進(jìn)程
當(dāng)程序在系統(tǒng)中運(yùn)行時(shí),它被稱為進(jìn)程( process)。要想監(jiān)測(cè)這些進(jìn)程,必須熟悉 ps 命令的用法。 ps 命令堪比工具中的瑞士軍刀,能夠輸出系統(tǒng)中運(yùn)行的所有程序的大量信息。
默認(rèn)的情況下,ps并不會(huì)輸出太多信息wkd@ubuntu:~$ ps PID TTY TIME CMD 111693 pts/10 00:00:00 bash 111707 pts/10 00:00:00 ps wkd@ubuntu:~$
也沒(méi)什么特別之處。 ps 命令默認(rèn)只顯示運(yùn)行在當(dāng)前終端中屬于當(dāng)前用戶的那些進(jìn)程。
Linux 系統(tǒng)中使用的 GNU ps 命令支持以下 3 種類型的命令行選項(xiàng):
- Unix 風(fēng)格選項(xiàng),選項(xiàng)前加單連字符;
- BSD 風(fēng)格選項(xiàng),選項(xiàng)前不加連字符;
- GNU 長(zhǎng)選項(xiàng),選項(xiàng)前加雙連字符。
1.Unix 風(fēng)格選項(xiàng)
如果需要查看系統(tǒng)中運(yùn)行的所有進(jìn)程,可以使用-ef 選項(xiàng)組合,使用ps -ef
,讀者可以自己在Linux系統(tǒng)試一下。
- -e 選項(xiàng)指定顯示系統(tǒng)中運(yùn)行的所有進(jìn)程;
- -f 選項(xiàng)則擴(kuò)充輸出內(nèi)容以顯示一些有用的信息列。
wkd@ubuntu:~$ ps -ef UID PID PPID C STIME TTY TIME CMD root 1 0 0 Jun14 ? 00:00:01 /sbin/init root 2 0 0 Jun14 ? 00:00:00 [kthreadd] root 3 2 0 Jun14 ? 00:02:04 [ksoftirqd/0] root 5 2 0 Jun14 ? 00:00:00 [kworker/0:0H] root 7 2 0 Jun14 ? 00:27:41 [rcu_sched]
輸出信息每列的解釋:
- UID:?jiǎn)?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:?jiǎn)?dòng)的程序名稱。
如果還想獲得更多的信息,可以使用-l 選項(xiàng),產(chǎn)生長(zhǎng)格式輸出。
wkd@ubuntu:~$ ps -l F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 4 S 1001 111693 111692 0 80 0 - 6807 wait pts/10 00:00:00 bash 0 R 1001 111769 111693 0 80 0 - 3557 - pts/10 00:00:00 ps wkd@ubuntu:~$
-l
選項(xiàng)多的幾列輸出解釋:
- F:內(nèi)核分配給進(jìn)程的系統(tǒng)標(biāo)志。
- S:進(jìn)程的狀態(tài)( O 代表正在運(yùn)行; S 代表在休眠; R 代表可運(yùn)行,正等待運(yùn)行; Z 代表
僵化,已終止但找不到其父進(jìn)程; T 代表停止)。- PRI:進(jìn)程的優(yōu)先級(jí)(數(shù)字越大,優(yōu)先級(jí)越低)。
- NI:謙讓度( nice),用于決定優(yōu)先級(jí)。
- ADDR:進(jìn)程的內(nèi)存地址。
- SZ:進(jìn)程被換出時(shí)所需交換空間的大致大小。
- WCHAN:進(jìn)程休眠的內(nèi)核函數(shù)地址。
2.BSD 風(fēng)格選項(xiàng)
在使用 BSD 風(fēng)格的選項(xiàng)時(shí), ps 命令會(huì)自動(dòng)改變輸出以模仿 BSD 格式。下面是使用 l 選項(xiàng)的輸出。wkd@ubuntu:~$ ps l F UID PID PPID PRI NI VSZ RSS WCHAN STAT TTY TIME COMMAND 4 1001 111693 111692 20 0 27228 5784 wait S pts/10 0:00 bash 0 1001 111796 111693 20 0 14228 2276 - R+ pts/10 0:00 ps l wkd@ubuntu:~$
輸出列解釋:
- VSZ:進(jìn)程占用的虛擬內(nèi)存大?。ㄒ?KB 為單位)。
- RSS:進(jìn)程在未被交換出時(shí)占用的物理內(nèi)存大小。
- STAT:代表當(dāng)前進(jìn)程狀態(tài)的多字符狀態(tài)碼。
狀態(tài)的第一個(gè)字符表明進(jìn)程是在休眠、運(yùn)行還是等待。
第二個(gè)字符進(jìn)一步說(shuō)明了進(jìn)程的狀態(tài):
<:該進(jìn)程以高優(yōu)先級(jí)運(yùn)行。
N:該進(jìn)程以低優(yōu)先級(jí)運(yùn)行。
L:該進(jìn)程有鎖定在內(nèi)存中的頁(yè)面。
s:該進(jìn)程是控制進(jìn)程。
l:該進(jìn)程擁有多線程。
+:該進(jìn)程在前臺(tái)運(yùn)行。
3.GNU 長(zhǎng)選項(xiàng)
選項(xiàng) 解釋 –deselect 顯示除命令行中列出的進(jìn)程之外的其他進(jìn)程 –Group grplist 顯示組 ID 在 grplist 列表中的進(jìn)程 –User userlist 顯示用戶 ID 在 userlist 列表中的進(jìn)程 –group grplist 顯示有效組 ID 在 grplist 列表中的進(jìn)程 –user userlist 顯示有效用戶 ID 在 userlist 列表中的進(jìn)程 –pid pidlist 顯示 pid 在 pidlist 列表中的進(jìn)程 –ppid pidlist 顯示父 pid 在 pidlist 列表中的進(jìn)程 –sid sidlist 顯示會(huì)話 ID 在 sidlist 列表中的進(jìn)程 –tty ttylist 顯示終端設(shè)備 ID 在 ttylist 列表中的進(jìn)程 –format format 僅顯示由 format 指定的列 –context 顯示額外的安全信息 –cols n 將屏幕寬度設(shè)置為 n 列 –columns n 將屏幕寬度設(shè)置為 n 列 –cumulative 包含已停止的子進(jìn)程的信息 –forest 用層級(jí)結(jié)構(gòu)顯示出進(jìn)程和父進(jìn)程之間的關(guān)系 –headers 在每頁(yè)輸出中都顯示列名 –no-headers 不顯示列名 –lines n 將屏幕高度設(shè)置為 n 行 –rows n 將屏幕高度設(shè)置為 n 行 –sort order 指定用于排序輸出的列 –width n 將屏幕寬度設(shè)置為 n 列 –help 顯示幫助信息 –info 顯示調(diào)試信息 –version 顯示 ps 命令的版本號(hào)
?2.2 top 命令 —— 實(shí)時(shí)監(jiān)測(cè)進(jìn)程
top 命令也可以顯示進(jìn)程信息,但采用的是實(shí)時(shí)方式。直接在命令行輸入
top
,不帶任何參數(shù),顯示結(jié)果如下圖:
輸出的第一部分顯示的是系統(tǒng)概況:
- 第一行顯示了當(dāng)前時(shí)間、系統(tǒng)的運(yùn)行時(shí)長(zhǎng)、登錄的用戶數(shù)以及系統(tǒng)的平均負(fù)載。平均負(fù)載最近 1 分鐘、 5 分鐘和15 分鐘的平均負(fù)載,由于進(jìn)程短期的突發(fā)性活動(dòng),最近 1 分鐘的高負(fù)載值也很常見(jiàn),如果近 15 分鐘內(nèi)的平均負(fù)載都很高,就說(shuō)明系統(tǒng)可能有問(wèn)題了。
- 第二行顯示了進(jìn)程( top 稱其為 task)概況:多少進(jìn)程處于運(yùn)行、休眠、停止以及僵化狀態(tài)(僵化狀態(tài)指進(jìn)程已結(jié)束,但其父進(jìn)程沒(méi)有響應(yīng))
- 第三行顯示了 CPU 概況。 top 會(huì)根據(jù)進(jìn)程的屬主(用戶或是系統(tǒng))和進(jìn)程的狀態(tài)(運(yùn)行、
空閑或等待)將 CPU 利用率分成幾類輸出。- 后面兩行詳細(xì)說(shuō)明了系統(tǒng)內(nèi)存的狀態(tài)。前一行顯示了系統(tǒng)的物理內(nèi)存狀態(tài):總共有多少內(nèi)存、當(dāng)前用了多少,以及還有多少空閑。后一行顯示了系統(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)的程序名。
?2.3 kill、pkill 命令 —— 結(jié)束進(jìn)程
kill
命令可以通過(guò) PID 向進(jìn)程發(fā)送信號(hào)。在默認(rèn)情況下, kill 命令會(huì)向命令行中列出的所有 PID 發(fā)送 TERM 信號(hào)。
可以使用kill pid號(hào)
來(lái)結(jié)束指定的pid號(hào)對(duì)應(yīng)的進(jìn)程;
如果有些進(jìn)程接收kill
命令發(fā)送的 TERM 信號(hào)后,仍不結(jié)束,可以使用-s
選項(xiàng)發(fā)送其他信號(hào),如:kill -s HUP pid號(hào)
pkill
命令可以使用程序名代替 PID 來(lái)終止進(jìn)程,
??三、磁盤相關(guān)命令
?3.1 mount、umount 命令 —— 掛載、卸載命令
用于掛載存儲(chǔ)設(shè)備的命令叫作 mount。在默認(rèn)情況下, mount 命令會(huì)輸出當(dāng)前系統(tǒng)已掛載的設(shè)備列表。
加-t
選項(xiàng)可以指定某個(gè)類型,輸入mount -t ext4
,只顯示 ext4 類型
下面是手動(dòng)掛載設(shè)備的基本命令:mount -t type 設(shè)備文件 掛載的目錄
例如,手動(dòng)將 U 盤/dev/sdb1 掛載到/media/disk,可以使用命令:
mount -t vfat /dev/sdb1 /media/disk
移除可移動(dòng)設(shè)備時(shí),不能直接將設(shè)備拔下,應(yīng)該先卸載。卸載設(shè)備的命令是
umount
,umount 命令的格式如下:umount [掛載的目錄 | 設(shè)備文件 ]
umount 命令支持通過(guò)設(shè)備文件或者掛載點(diǎn)來(lái)指定要卸載的設(shè)備。如果有任何程序正在使用設(shè)備上的文件,則系統(tǒng)將不允許卸載該設(shè)備。
?3.2 df 命令 —— 查看磁盤空間
有時(shí)需要知道在某臺(tái)設(shè)備上還有多少磁盤空間。 df 命令可以方便地查看所有已掛載磁盤的使用情況,可以使用
-t
選項(xiàng)來(lái)過(guò)濾類型
使用
-h
選項(xiàng)會(huì)以人類易讀( humanreadable)的形式顯示磁盤空間:
?3.3 du 命令 —— 查看特定目錄磁盤空間
du 命令可以顯示某個(gè)特定目錄(默認(rèn)情況下是當(dāng)前目錄)的磁盤使用情況。
在默認(rèn)情況下, du 命令會(huì)顯示當(dāng)前目錄下所有的文件、目錄和子目錄的磁盤使用情況,并以磁盤塊為單位來(lái)表明每個(gè)文件或目錄占用了多大存儲(chǔ)空間。wkd@ubuntu:~$ du 4 ./Templates 8 ./.cache/logrotate 8 ./.cache/sso 12 ./.cache/update-manager-core 4 ./.cache/software-center/rnrclient 20 ./.cache/software-center/software-center-agent.db.tmp 4 ./.cache/software-center/icons 4 ./.cache/software-center/piston-helper 40 ./.cache/software-center 344 ./.cache/wallpaper 20 ./.cache/webkit/icondatabase 24 ./.cache/webkit 20 ./.cache/ibus/bus 24 ./.cache/ibus 116 ./.cache/compizconfig-1 148 ./.cache/upstart 780 ./.cache 4 ./Downloads 4 ./Pictures 4 ./Music 4 ./Desktop 4 ./Videos 4 ./Documents 4 ./Public 1492 .
每行最左側(cè)的數(shù)字是每個(gè)文件或目錄所占用的磁盤塊數(shù)。注意,這個(gè)列表是從目錄層級(jí)的最底部開始,然后沿著其中包含的文件和子目錄逐級(jí)向上的。
下面這些選項(xiàng)能讓 du 命令的輸出更加清晰易讀。
- -c:顯示所有已列出文件的總大小。
- -h:按人類易讀格式輸出大小,分別用 K 表示千字節(jié)、 M 表示兆字節(jié)、 G 表示吉字節(jié)。
- -s:輸出每個(gè)參數(shù)的匯總信息
??四、處理數(shù)據(jù)文件相關(guān)命令
?4.1 sort 命令 —— 數(shù)據(jù)排序
sort 命令會(huì)依據(jù)會(huì)話所指定的默認(rèn)語(yǔ)言的排序規(guī)則來(lái)對(duì)文本文件中的數(shù)據(jù)行進(jìn)行排序。
默認(rèn)情況下,按字符排序;其他選項(xiàng)如表:
選項(xiàng) 長(zhǎng) 選 項(xiàng) 描述 -b –ignore-leading-blanks 排序時(shí)忽略起始的空白字符 -C –check=quiet 不排序,如果數(shù)據(jù)無(wú)序也不要報(bào)告 -c –check 不排序,但檢查輸入數(shù)據(jù)是否有序,無(wú)序的話就報(bào)告 -d –dictionary-order 僅考慮空白字符和字母數(shù)字字符,不考慮特殊字符 -f –ignore-case 大寫字母默認(rèn)先出現(xiàn),該選項(xiàng)會(huì)忽略大小寫 -g –general-numeric-sort 使用一般數(shù)值進(jìn)行排序 -i –ignore-nonprinting 在排序時(shí)忽略不可打印字符 -k –key=POS1[,POS2] 排序鍵從 POS1 位置開始,到 POS2 位置結(jié)束(如果指定了 POS2的話) -M –month-sort 用三字符的月份名按月份排序 -m –merge 合并兩個(gè)已排序數(shù)據(jù)文件 -n –numeric-sort 將字符串按數(shù)值意義排序 -o –output=file 將排序結(jié)果寫入指定文件 -R –random-sort 根據(jù)隨機(jī)哈希排序 -R –random-source=FILE 指定-R 選項(xiàng)用到的隨機(jī)字節(jié)文件 -r –reverse 逆序排序(升序變成降序) -S –buffer-size=SIZE 指定使用的內(nèi)存大小 -s –stable 禁止 last-resort 比較,實(shí)現(xiàn)穩(wěn)定排序 -T –temporary-directory=DIR 指定用于保存臨時(shí)工作文件的目錄 -t –field-separator=SEP 指定字段分隔符 -u –unique 和-c 選項(xiàng)合用時(shí),檢查嚴(yán)格排序;不和-c 選項(xiàng)合用時(shí),相同行僅輸出一次① -z –zero-terminated 在行尾使用 NULL 字符代替換行符
?4.2 grep 命令 —— 數(shù)據(jù)搜索
grep 命令會(huì)在輸入或指定文件中逐行搜索匹配指定模式的文本。
grep 命令的格式如下:grep [options] pattern [file]
一些常用選項(xiàng)options:
-n
:顯示行號(hào)-c
:只顯示含有匹配的模式的行數(shù);-w
:全詞匹配,例如,grep apple -n ./file
時(shí),只有搜到apple
,而不會(huì)搜到apples
;-R
:在目錄中遞歸搜索
文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-515159.html
??五、總結(jié)
本文主要介紹一些shell常用的命令:ps、top、kill、pkill、mount、umount、df 、du、sort、grep等等
如果文章有幫助的話,點(diǎn)贊??、收藏?,支持一波,謝謝 ??????文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-515159.html
到了這里,關(guān)于【Linux | Shell命令】bash shell 進(jìn)程、磁盤、文件處理命令的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!