《Linux命令行與shell腳本編程大全》讀書筆記
檢測程序
探查進(jìn)程命令ps
Linux使用的GNUps命令支持3種不同類型的命令行參數(shù):
- Unix風(fēng)格的參數(shù)筝野,前面加單破折線梯码;
- BSD風(fēng)格的參數(shù)娜搂,前面不加破折線;
- GNU風(fēng)格的長參數(shù)禀忆,前面加雙破折線屑那。
-e 選項
:指定顯示所有運行在系統(tǒng)上的進(jìn)程哈踱;
-f 選項
:擴展了輸出。這些擴展的列包含如下信息慢显。
--forest 選項
:顯示進(jìn)程層級信息爪模,并用ASCII字符繪出圖表。
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 May13 ? 00:00:01 /sbin/init
root 2 0 0 May13 ? 00:00:00 [kthreadd]
UID:啟動這些進(jìn)程的用戶鳍怨。
PID:進(jìn)程的進(jìn)程ID呻右。
PPID:父進(jìn)程的進(jìn)程號。
C:進(jìn)程生命周期中的CPU利用率鞋喇。
STIME:進(jìn)程啟動時的系統(tǒng)時間声滥。
TTY:進(jìn)程啟動時的終端設(shè)備。
TIME:運行進(jìn)程需要的累計CPU時間侦香。
CMD:啟動的程序名稱落塑。
-l 選項
:產(chǎn)出長格式輸出。
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
0 S 500 12955 12954 0 80 0 - 27084 wait pts/0 00:00:00 bash
0 R 500 14484 12955 0 80 0 - 27033 - pts/0 00:00:00 ps
F:內(nèi)核分配給進(jìn)程的系統(tǒng)標(biāo)記罐韩。
S:進(jìn)程的狀態(tài)(O正在運行憾赁;S休眠;R可運行散吵,正等待運行龙考;Z僵化蟆肆,進(jìn)程已結(jié)束但父進(jìn)程已不存在;T停止)晦款。
PRI:進(jìn)程優(yōu)先級(越大的數(shù)字代表越低的優(yōu)先級)炎功。
NI:謙讓度值用來參與決定優(yōu)先級。
ADDR:進(jìn)程的內(nèi)存地址缓溅。
SZ:假如進(jìn)程被換出蛇损,所需交換空間的大致大小。
WCHAN:進(jìn)程休眠的內(nèi)核函數(shù)的地址坛怪。
實時監(jiān)測進(jìn)程命令top
ps命令缺陷:只能顯示某個特定時間點的信息淤齐。
top命令功能:實時顯示進(jìn)程信息。
[lsh@localhost ~]$ top
top - 18:26:32 up 1 day, 3:34, 2 users, load average: 0.00, 0.00, 0.00
Tasks: 100 total, 1 running, 99 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.0%us, 0.1%sy, 0.0%ni, 99.9%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 1004412k total, 494168k used, 510244k free, 61572k buffers
Swap: 2031608k total, 0k used, 2031608k free, 242440k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 20 0 19364 1548 1232 S 0.0 0.2 0:01.34 init
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
3 root RT 0 0 0 0 S 0.0 0.0 0:00.00 migration/0
- 第一行:當(dāng)前時間袜匿、系統(tǒng)運行時間更啄、登錄用戶數(shù)、系統(tǒng)平均負(fù)載居灯。
平均負(fù)載3個值:最近1分鐘锈死、最近5分鐘、最近15分鐘穆壕。
值越大負(fù)載越高。
重點
是最近15分鐘
的平均負(fù)載很高其屏,說明系統(tǒng)可能有問題喇勋。
通常,負(fù)載值超過CPU核數(shù)*0.7偎行,就說明系統(tǒng)比較繁忙川背,需要優(yōu)化。
使用命令:
# 總核數(shù) = 物理CPU個數(shù) X 每顆物理CPU的核數(shù)
# 總邏輯CPU數(shù) = 物理CPU個數(shù) X 每顆物理CPU的核數(shù) X 超線程數(shù)
# 查看物理CPU個數(shù)
[root@S6 core]# cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l
# 查看每個物理CPU核數(shù)
[root@S6 core]# cat /proc/cpuinfo| grep "cpu cores"| uniq
[root@S6 core]# grep 'model name' /proc/cpuinfo | wc -l
# 查看邏輯CPU的個數(shù)蛤袒,即多少線程
[root@S6 core]# cat /proc/cpuinfo| grep "processor"| wc -l
第二行:進(jìn)程(top命令輸出中將進(jìn)程叫任務(wù))概要
運行進(jìn)程數(shù)熄云、休眠進(jìn)程數(shù)、停止進(jìn)程數(shù)妙真、僵化進(jìn)程數(shù)缴允。第三行:CPU概要
根據(jù)進(jìn)程屬主(用戶/系統(tǒng))和進(jìn)程狀態(tài)將CPU利用率分成幾類輸出。緊隨2行:內(nèi)存狀態(tài)
第一行:物理內(nèi)存(總數(shù)珍德、已用练般、剩余空閑),默認(rèn)單位KB锈候,可以按大寫的E切換顯示單位
第二行:交換空間(總數(shù)薄料、已用、剩余)最后一部分:當(dāng)前運行進(jìn)程詳細(xì)列表泵琳。
PID:進(jìn)程ID摄职。
USER:進(jìn)程屬主名字誊役。
PR:進(jìn)程優(yōu)先級。
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)啦桌。
%CPU:進(jìn)程使用的CPU時間比例。
%MEM:進(jìn)程使用的內(nèi)存占可用內(nèi)存的比例及皂。
TIME+:自進(jìn)程啟動到目前為止CPU時間總量甫男。
COMMAND:進(jìn)程所對應(yīng)的命令行名稱,也就是啟動的程序名验烧。
默認(rèn)top命令按%CPU值對進(jìn)程排序板驳。可以在top運行時鍵入命令重新排序碍拆。
f 命令
:選擇重新排序的字段若治。
d 命令
:修改輪詢間隔。
q 命令
:退出top感混。
結(jié)束進(jìn)程命令kill
- kill命令
只能通過進(jìn)程的PID端幼,而不能用命令名。
默認(rèn)向命令行中列出的全部PID發(fā)送一個TERM信號弧满。
要發(fā)進(jìn)程信號婆跑,需要是進(jìn)程的屬主 / 登錄為root用戶。
-s 參數(shù)
:指定其他信號(信號名/信號值)庭呜。 - killall 命令
支持通過進(jìn)程名而不是PID來結(jié)束進(jìn)程滑进。
也支持通配符,在系統(tǒng)因負(fù)載過大而變得很慢時很有用募谎。
監(jiān)測磁盤空間
掛載(mounting)存儲媒體
今天的圖形化桌面環(huán)境下扶关,大多數(shù)Linux發(fā)行版能自動掛載特定類型的可移動存儲媒體(CD、U盤等)数冬。
- mount命令
默認(rèn)輸出當(dāng)前系統(tǒng)掛載的設(shè)備列表节槐。
[lsh@localhost ~]$ mount
/dev/mapper/VolGroup-lv_root on / type ext4 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw,rootcontext="system_u:object_r:tmpfs_t:s0")
/dev/sda1 on /boot type ext4 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
vmware-vmblock on /var/run/vmblock-fuse type fuse.vmware-vmblock (rw,nosuid,nodev,default_permissions,allow_other)
輸出4部分信息:
①媒體的設(shè)備文件名
②媒體掛載到虛擬目錄的掛載點
③文件系統(tǒng)類型(vfat:Windows長文件系統(tǒng)(大多數(shù)U盤的格式),ntfs:Windows高級文件系統(tǒng)吉执,iso9660:標(biāo)準(zhǔn)CD文件系統(tǒng))
④已掛載媒體的訪問狀態(tài)
手動掛載設(shè)備疯淫,需要root權(quán)限。
基本命令:mount -t 文件系統(tǒng)類型 設(shè)備 目錄
掛載之后戳玫,只有root用戶有權(quán)訪問熙掺,普通用戶需要指定權(quán)限。
- umount命令
卸載設(shè)備命令格式:umount 目錄/設(shè)備
如果卸載設(shè)備時咕宿,提示設(shè)備繁忙币绩,無法卸載蜡秽。可用lsof 命令
獲得使用它的進(jìn)程信息缆镣。
命令格式:lsof 目錄
使用 df 命令
功能:查看所有已掛載磁盤使用情況芽突。
-h 選項
:按照用戶易讀的形式顯示輸出。
[lsh@localhost ~]$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root 18G 3.7G 13G 23% /
tmpfs 491M 0 491M 0% /dev/shm
/dev/sda1 485M 35M 426M 8% /boot
命令輸出:
①設(shè)備的設(shè)備文件位置董瞻;
②總?cè)萘浚?br>
③已用寞蚌;
④剩余;
⑤已用空間所占比例钠糊;
⑥設(shè)備掛載到了哪個掛載點挟秤。
使用du命令
功能:顯示某個特定目錄(默認(rèn)當(dāng)前目錄)的磁盤使用情況〕椋可用來快速判斷系統(tǒng)上某個目錄下是否有超大文件艘刚。
[lsh@localhost ~]$ du -h
4.0K ./.gnome2
4.0K ./.mozilla/extensions
4.0K ./.mozilla/plugins
12K ./.mozilla
40K .
輸出:當(dāng)前目錄下所有文件、目錄和子目錄的磁盤使用情況截珍。
這個輸出列表是從目錄層級的最底部開始攀甚,然后按文件、子目錄岗喉、目錄逐級向上秋度。
-c 選項
:顯示所有已列出文件總大小。
-h 選項
:按用戶易讀格式輸出大小钱床。
-s 選項
:顯示每個輸出參數(shù)的總計静陈。
處理數(shù)據(jù)文件
排序數(shù)據(jù)sort
默認(rèn)按會話指定的默認(rèn)語言的排序規(guī)則對文本文件
中的數(shù)據(jù)行排序。
默認(rèn)把數(shù)字當(dāng)作字符來執(zhí)行標(biāo)準(zhǔn)的字符排序诞丽。
-n 選項
:告訴sort命令把數(shù)字識別成數(shù)字而不是字符,并按值排序拐格。
-M 選項
:按月排序僧免,在處理日志文件時比較有用。
搜索數(shù)據(jù)grep
命令格式:grep 選項 模式 文件
-v 選項
:反向搜索捏浊。
-n 選項
:顯示匹配模式的行所在行號懂衩。
-c 選項
:只輸出有多少行含有匹配的模式。
-e 選項
:指定多個匹配模式金踪。例:grep -e 模式 -e 模式 文件
浊洞。
默認(rèn)用Unix風(fēng)格正則表達(dá)式來匹配模式。
初次之外胡岔,還有egrep和fgrep法希。
壓縮數(shù)據(jù)gzip
gzip:壓縮文件。
gzcat:查看壓縮過的文本文件內(nèi)容靶瘸。
gunzip:解壓文件苫亦。
歸檔數(shù)據(jù)tar
命令格式:tar 功能 選項 對象1 對象2
-c 功能
:創(chuàng)建一個新的tar歸檔文件毛肋。
-x 功能
:從已有tar歸檔文件中提取文件。
-f file選項
:輸出結(jié)果到文件或設(shè)備file
-v 選項
:在處理文件時顯示文件
-z 選項
:將輸出重定向給gzip命令來壓縮內(nèi)容