Linux核心系統管理命令
阿新 • • 發佈:2019-02-01
3.1 lsof:檢視程序開啟的檔案
3.1.1 命令詳解
功能說明:
lsof全名為list open files,也就是列舉系統中已經被開啟的檔案,通過lsof命令,就可以根據檔案找到對應的程序資訊,也可以根據程序資訊找到程序開啟的檔案
選項說明:
引數選項 | 解釋說明 |
---|---|
-c <程序名> | 顯示指定的程序名所開啟的檔案 |
-p <程序號> | 顯示指定的程序號所開啟的檔案 |
-i | 通過監聽指定的協議,埠和主機等資訊,顯示符合條件的程序資訊 |
-u | 顯示指定使用者使用的檔案 |
-U | 顯示所有socket檔案 |
3.1.2 使用範例
(1)顯示使用檔案的程序
[[email protected]_chen ~]# lsof /var/log /messages #顯示使用檔案的程序
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
rsyslogd 870 root w REG 253,0 501224 262654 /var/log/messages
如果想知道某個特定的檔案是由哪個程序在使用,就可以通過“lsof 檔名”的方式來得到。從上面的輸出可以得知,/var/log/messages檔案是由rsyslogd程序在使用。
輸出中每列的含義具體如下:
- [x] COMMAND:命令,程序的名稱。
- [x] PID:程序號。
- [x] USER:程序的所有者。
- [x] FD:檔案描述符,它又包含如下內容
- 0:表示標準輸出。
- 1:表示標準輸入。
- 2:表示標準錯誤。
- u:表示該檔案被開啟並處於讀取/寫入模式
- r:表示該檔案被開啟並處於只讀模式
- w:表示該檔案被開啟並處於寫入模式
- [x] TYPE:檔案型別,REG(regular)為普通檔案
- [x] DEVICE:指定磁碟的名稱。
- [x] SIZE/OFF:檔案的大小
- [x] NODE:索引節點
- [x] NAME:檔名稱
(2)顯示指定程序所開啟的檔案
[[email protected]_chen ~]# lsof -c rsyslog #使用-c選項顯示指定程序所開啟的檔案
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
rsyslogd 870 root cwd DIR 253,0 4096 2 /
rsyslogd 870 root rtd DIR 253,0 4096 2 /
rsyslogd 870 root txt REG 253,0 396064 130951 /sbin/rsyslogd
rsyslogd 870 root mem REG 253,0 27232 393534 /lib64/rsyslog/imklog.so
rsyslogd 870 root mem REG 253,0 340568 393540 /lib64/rsyslog/imuxsock.so
rsyslogd 870 root mem REG 253,0 65928 392495 /lib64/libnss_files-2.12.so
rsyslogd 870 root mem REG 253,0 26984 393541 /lib64/rsyslog/lmnet.so
rsyslogd 870 root mem REG 253,0 1921216 392479 /lib64/libc-2.12.so
rsyslogd 870 root mem REG 253,0 90880 392452 /lib64/libgcc_s-4.4.7-20120601.so.1
rsyslogd 870 root mem REG 253,0 43832 392507 /lib64/librt-2.12.so
rsyslogd 870 root mem REG 253,0 19536 392485 /lib64/libdl-2.12.so
rsyslogd 870 root mem REG 253,0 142640 392503 /lib64/libpthread-2.12.so
rsyslogd 870 root mem REG 253,0 88600 392529 /lib64/libz.so.1.2.3
rsyslogd 870 root mem REG 253,0 154520 392472 /lib64/ld-2.12.so
rsyslogd 870 root 0u unix 0xffff880037d8b6c0 0t0 8910 /dev/log
rsyslogd 870 root 1w REG 253,0 501224 262654 /var/log/messages
rsyslogd 870 root 2w REG 253,0 5164 262655 /var/log/secure
rsyslogd 870 root 3r REG 0,3 0 4026532040 /proc/kmsg
rsyslogd 870 root 4w REG 253,0 18512 262652 /var/log/cron
(3)顯示指定程序號說開啟的檔案
[[email protected]_chen ~]# lsof -p 870 #使用-p選項顯示指定程序號所開啟的檔案
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
rsyslogd 870 root cwd DIR 253,0 4096 2 /
rsyslogd 870 root rtd DIR 253,0 4096 2 /
rsyslogd 870 root txt REG 253,0 396064 130951 /sbin/rsyslogd
rsyslogd 870 root mem REG 253,0 27232 393534 /lib64/rsyslog/imklog.so
rsyslogd 870 root mem REG 253,0 340568 393540 /lib64/rsyslog/imuxsock.so
rsyslogd 870 root mem REG 253,0 65928 392495 /lib64/libnss_files-2.12.so
rsyslogd 870 root mem REG 253,0 26984 393541 /lib64/rsyslog/lmnet.so
rsyslogd 870 root mem REG 253,0 1921216 392479 /lib64/libc-2.12.so
rsyslogd 870 root mem REG 253,0 90880 392452 /lib64/libgcc_s-4.4.7-20120601.so.1
rsyslogd 870 root mem REG 253,0 43832 392507 /lib64/librt-2.12.so
rsyslogd 870 root mem REG 253,0 19536 392485 /lib64/libdl-2.12.so
rsyslogd 870 root mem REG 253,0 142640 392503 /lib64/libpthread-2.12.so
rsyslogd 870 root mem REG 253,0 88600 392529 /lib64/libz.so.1.2.3
rsyslogd 870 root mem REG 253,0 154520 392472 /lib64/ld-2.12.so
rsyslogd 870 root 0u unix 0xffff880037d8b6c0 0t0 8910 /dev/log
rsyslogd 870 root 1w REG 253,0 501224 262654 /var/log/messages
rsyslogd 870 root 2w REG 253,0 5164 262655 /var/log/secure
rsyslogd 870 root 3r REG 0,3 0 4026532040 /proc/kmsg
rsyslogd 870 root 4w REG 253,0 18512 262652 /var/log/cron
(4)監聽指定的協議,埠和主機等資訊,顯示符合條件的程序資訊
在講解範例之前,我們先來看看相應語法格式:
lsof -i [46] [protocol] [@hostname] [:service|port]
其中各項的含義如下:
- [x] 46:4代表IPv4,6代表IPv6
- [x] protocol:傳輸協議,可以是TCP或UDP
- [x] hostname:主機名稱或者IP地址
- [x] port:系統中與服務對應的埠號。例如HTTP服務預設對應的埠號為80,SSH服務預設對應的埠號為22.
[[email protected]_chen ~]# lsof -i #檢視所有程序
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sshd 885 root 3u IPv4 8948 0t0 TCP *:ssh (LISTEN)
sshd 885 root 4u IPv6 8950 0t0 TCP *:ssh (LISTEN)
sshd 918 root 3r IPv4 9075 0t0 TCP localhost:ssh->localhost:54216 (ESTABLISHED)
[[email protected]_chen ~]# lsof -i tcp #顯示所有tcp網路連線的程序資訊
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sshd 885 root 3u IPv4 8948 0t0 TCP *:ssh (LISTEN)
sshd 885 root 4u IPv6 8950 0t0 TCP *:ssh (LISTEN)
sshd 918 root 3r IPv4 9075 0t0 TCP localhost:ssh->localhost:54216 (ESTABLISHED)
[[email protected]_chen ~]# lsof -i:22 #顯示埠為22的程序,這條命令很常用
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sshd 885 root 3u IPv4 8948 0t0 TCP *:ssh (LISTEN)
sshd 885 root 4u IPv6 8950 0t0 TCP *:ssh (LISTEN)
sshd 918 root 3r IPv4 9075 0t0 TCP localhost:ssh->localhost:54216 (ESTABLISHED)
[[email protected]_chen ~]# lsof -i tcp:22 #顯示同時滿足TCP和埠為22的程序
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sshd 885 root 3u IPv4 8948 0t0 TCP *:ssh (LISTEN)
sshd 885 root 4u IPv6 8950 0t0 TCP *:ssh (LISTEN)
sshd 918 root 3r IPv4 9075 0t0 TCP localhost:ssh->localhost:54216 (ESTABLISHED)
(5)顯示指定使用者使用的檔案
[[email protected]_chen ~]# lsof -u Mr_chen #使用-u選項顯示Mr_chen使用者使用的檔案
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
bash 1012 Mr_chen cwd DIR 253,0 4096 138686 /home/Mr_chen
bash 1012 Mr_chen rtd DIR 253,0 4096 2 /
bash 1012 Mr_chen txt REG 253,0 903336 786016 /bin/bash
bash 1012 Mr_chen mem REG 253,0 99158576 655748 /usr/lib/locale/locale-archive
bash 1012 Mr_chen mem REG 253,0 65928 392495 /lib64/libnss_files-2.12.so
bash 1012 Mr_chen mem REG 253,0 1921216 392479 /lib64/libc-2.12.so
bash 1012 Mr_chen mem REG 253,0 19536 392485 /lib64/libdl-2.12.so
bash 1012 Mr_chen mem REG 253,0 135896 392521 /lib64/libtinfo.so.5.7
bash 1012 Mr_chen mem REG 253,0 154520 392472 /lib64/ld-2.12.so
bash 1012 Mr_chen mem REG 253,0 26060 916570 /usr/lib64/gconv/gconv-modules.cache
bash 1012 Mr_chen 0u CHR 136,1 0t0 4 /dev/pts/1
bash 1012 Mr_chen 1u CHR 136,1 0t0 4 /dev/pts/1
bash 1012 Mr_chen 2u CHR 136,1 0t0 4 /dev/pts/1
bash 1012 Mr_chen 255u CHR 136,1 0t0 4 /dev/pts/1
(6)顯示所有socket檔案
[[email protected]_chen ~]# lsof -U #使用-U選項顯示所有socket檔案
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
init 1 root 7u unix 0xffff880037afa680 0t0 7510 socket
udevd 360 root 4u unix 0xffff880037afa980 0t0 7857 socket
udevd 360 root 8u unix 0xffff880037afac80 0t0 7873 socket
udevd 360 root 9u unix 0xffff880037afa080 0t0 7874 socket
udevd 635 root 9u unix 0xffff880037afa080 0t0 7874 socket
rsyslogd 870 root 0u unix 0xffff880037d8b6c0 0t0 8910 /dev/log
crond 893 root 4u unix 0xffff880037d8b3c0 0t0 8976 socket
sshd 918 root 4w unix 0xffff880037d8b0c0 0t0 9125 socket
anacron 983 root 4u unix 0xffff880037d8b9c0 0t0 10018 socket
su 1011 root 3u unix 0xffff880037d8bcc0 0t0 10151 socket
3.2 free:檢視系統記憶體資訊
3.2.1 命令詳解
功能說明:
free命令用於顯示系統記憶體狀態,具體包括系統實體記憶體,虛擬記憶體,共享記憶體和系統快取等。
選項說明:
引數選項 | |
---|---|
-b | 以Byte為單位顯示記憶體的使用情況 |
-m | 以MB為單位顯示記憶體的使用情況@ |
-K | 以KB為單位顯示記憶體的使用情況 |
-h | 以人類可讀的形式顯示記憶體的使用情況@ |
-t | 顯示記憶體總和列 |
-s <間隔秒數> | 根據指定的間隔秒數持續顯示記憶體的使用情況@ |
-o | 不顯示系統緩衝區列 |
3.2.2 使用範例
(1)檢視系統記憶體
[[email protected]_chen ~]# free #不加引數預設顯示的是位元組數,很難讀懂
total used free shared buffers cached
Mem: 1004412 85788 918624 0 6168 22904
-/+ buffers/cache: 56716 947696
Swap: 2031608 0 2031608
[[email protected]_chen ~]# free -m #使用-m選項,以MB為單位顯示記憶體的使用情況
total used free shared buffers cached
Mem: 980 83 897 0 6 22
-/+ buffers/cache: 55 925
Swap: 1983 0 1983
針對上面的輸出,有以下說明
- [x] Linux系統的特性是將不用的實體記憶體快取起來,因此897MB不是系統的真實剩餘記憶體。
- [x] 系統真正可用的記憶體為925MB
- [x] buffers為寫入資料緩衝區
- [x] cache為讀取資料快取區
(2)定時查詢記憶體
[[email protected]_chen ~]# free -s 10 #使用-s選項定時重新整理記憶體的使用情況,單位為秒
total used free shared buffers cached
Mem: 1004412 85888 918524 0 6168 22932
-/+ buffers/cache: 56788 947624
Swap: 2031608 0 2031608
3.3 iftop:動態顯示網路介面流量資訊
3.3.1 命令詳解
功能說明:
- iftop是一款實時流量監控工具,可用於監控TCP/IP連線等,必須以root使用者的身份執行。
- 一般最小化安裝系統都是沒有這個命令的,需要使用yum命令額外安裝,而且還要從epel源下載。
epel源的安裝幫助請參見:http://mirrors.aliyun.com/help/epel
安裝iftop命令的步驟請參見:wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
yum -y install iftop
選項說明:
引數選項 | |
---|---|
-i | 指定監聽的網路介面@ |
-n | 不進行DNS解析@ |
-N | 不將埠號解析成服務名@ |
-B | 以byte為單位顯示流量(預設是bit)@ |
-p | 設定網絡卡為混雜模式,以便不直接通過指定介面傳遞的流量也能被計數 |
-P(大寫) | 顯示埠號@ |
-m | 設定介面最上邊的刻度的最大值,刻度分為五個大段顯示 |
-F | 顯示特定網段的進出流量 |
3.3.2 使用範例
(1)不接任何引數啟動iftop命令監控流量。
[[email protected]_chen yum.repos.d]# iftop
interface: eth0 #預設監聽系統的第一塊網絡卡,可以使用-i選項指定監聽網絡卡
IP address is: 192.168.0.233
MAC address is: 00:0c:29:a8:ca:50
上圖為iftop介面,相關說明如下:
- [x] 介面上顯示的是類似刻度尺的刻度範圍,是以標尺的形式顯示流量圖形的長條
- [x] 中間的<=或=>這兩個左右箭頭,表示的是流量的反向
- [x] TX:傳送流量
- [x] RX:接收