Linux 經常使用命令:系統狀態篇

前言

Linux經常使用命令中,有些命令能夠用於查看系統的狀態,經過了解系統當前的狀態,可以幫助咱們更好地維護系統或定位問題。本文就簡單介紹一下這些命令。python

1. 查看系統運行時間--uptime

有時候咱們想知道系統上一次復位是在何時或者系統已經運行了多長時間,咱們能夠經過uptime命令獲取這些信息:git

uptime
20:47:06 up 50 min,  1 user,  load average: 0.75, 0.84, 0.93

從左往右顯示的信息依次爲:當前時間、已運行時間、用戶登陸數、1分鐘、5分鐘和15分鐘內系統的平均負載。redis

2. 查看系統已登陸用戶--who

who -a
hyb      tty7         2018-09-30 19:57 (:0)

經過who命令能夠查看到哪些用戶經過哪一個ip登陸到了這臺主機。shell

3. 查看系統版本相關信息--uname

例如:ubuntu

uname -a
Linux ubuntu16.04 4.15.0-34-generic #37~16.04.1-Ubuntu SMP Tue Aug 28 10:44:06 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

從結果能夠看到操做系統版本(ubuntu16.04),CPU類型(x86_64)等信息vim

4. 查看當前環境變量--export

環境變量影響着程序的運行,所以有時候須要查看當前環境的環境變量:export網絡

5. 查看目錄和文件佔用空間--du

du命令直接顯示當前目錄下每一個目錄及其文件佔用空間。結合--max-depth參數能夠指定顯示的目錄層級。
例如,若是隻想顯示當前目錄下各個目錄所佔總空間,可使用:hexo

du -h --max-depth=1 
19M        ./python
9.0M        ./git
321M        ./hexo
17M        ./lua
28K        ./vim
1.4M        ./shell
81M        ./redis
316M        ./books
48M        ./c
810M        .
du -sh     #僅統計當前目錄總大小
810M

其中-h表示以易讀的單位顯示大小,即M,--max-depth=1代表目錄層級。經過命令結果,咱們能夠看到當前目錄下各個子目錄佔用空間大小,以及總空間大小。性能

6. 查看各掛載點空間--df

例如:優化

df -h
文件系統        容量  已用  可用 已用% 掛載點
udev            3.9G     0  3.9G    0% /dev
tmpfs           786M  9.5M  776M    2% /run
/dev/sda10       24G  9.8G   13G   45% /
tmpfs           3.9G   43M  3.8G    2% /dev/shm
tmpfs           5.0M  4.0K  5.0M    1% /run/lock
tmpfs           3.9G     0  3.9G    0% /sys/fs/cgroup
/dev/sda11      454M  274M  153M   65% /boot
/dev/sda15       55G  5.2G   47G   10% /home
/dev/sda1       256M   31M  226M   12% /boot/efi
/dev/sda14      4.6G  9.9M  4.4G    1% /tmp
tmpfs           786M   60K  786M    1% /run/user/1000

從結果中,咱們能夠看到各個掛載點總空間以及可用空間。當磁盤文件佔用空間較大時,可能致使系統運行緩慢,所以,可根據該結果進行相應的磁盤清理。

7. 查看內存可用狀況--free

free命令可用於顯示系統中可用的物理內存,交換區內存以及內核使用的buffer:

free -h
              total        used        free      shared  buff/cache   available
Mem:           7.7G        2.3G        2.6G        268M        2.8G        4.7G
Swap:          7.6G          0B        7.6G

從執行結果能夠看到已用內存和空閒內存的狀況。一樣地,當內存不足時,可能致使程序運行異常或系統卡頓。

8. 查看進程的內存使用狀況--pmap

pmap命令用於查看進程內存相關信息:

pmap pid    #pid爲進程id,可經過ps命令獲取
6030:   ./main
0000000000400000      4K r-x-- main
0000000000600000      4K r---- main
0000000000601000      4K rw--- main
00000000017d2000    132K rw---   [ anon ]
00007fc3843e8000   1792K r-x-- libc-2.23.so
00007fc3845a8000   2048K ----- libc-2.23.so
00007fc3847a8000     16K r---- libc-2.23.so
00007fc3847ac000      8K rw--- libc-2.23.so
00007fc3847ae000     16K rw---   [ anon ]
00007fc3847b2000    152K r-x-- ld-2.23.so
00007fc3849b9000     12K rw---   [ anon ]
00007fc3849d7000      4K r---- ld-2.23.so
00007fc3849d8000      4K rw--- ld-2.23.so
00007fc3849d9000      4K rw---   [ anon ]
00007ffcf2018000    132K rw---   [ stack ]
00007ffcf2175000     12K r----   [ anon ]
00007ffcf2178000      8K r-x--   [ anon ]
ffffffffff600000      4K r-x--   [ anon ]
 total             4356K

咱們能夠根據進程各部分佔用空間狀況,來不斷優化咱們的程序。

9. 查看虛擬內存統計信息--vmstat

vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 1  0      0 2214960 407828 2572148    0    0   126    57  377 1006  8  2 88  2  0

vmstat的輸出值可以幫助咱們瞭解當前系統的性能。好比說,若是si(每秒從交換區寫到內存的大小)和so(每秒寫入交換區的內存大小)的值常常大於0,說明內存可能不夠用,所以才須要用到交換空間。再好比說,us(用戶進程執行時間百分比)的值比較高時,說明用戶進程消耗的CPU資源較多。而wa(IO等待時間百分比)值較高時,說明IO等待狀況嚴重。

10. 查看ip地址--ip

有時候使用ifconfig命令並不必定可以看到全部的ip地址,所以可使用:ip addr

11. 查看網絡鏈接狀態--netstat

netstat命令能夠查看網絡鏈接狀態,一般用於診斷網絡相關問題。例如查看端口是否被佔用,鏈接是否已經釋放,服務是否在監聽等等。

12. 查看進程間關係--pstree

經過pstree命令能夠看到進程間的父子關係,它以樹形結構顯示這些信息:

pstree
systemd─┬─ModemManager─┬─{gdbus}
        │              └─{gmain}
        ├─NetworkManager─┬─dhclient
        │                ├─dnsmasq
        │                ├─{gdbus}
        │                └─{gmain}
        ├─accounts-daemon─┬─{gdbus}
        │                 └─{gmain}
        ├─acpid
        ├─atd
        ├─avahi-daemon───avahi-daemon
        ├─bluetoothd
        ├─colord─┬─{gdbus}
        │        └─{gmain}
        ├─cron
        ├─cups-browsed─┬─{gdbus}
        │              └─{gmain}
        ├─cupsd───3*[dbus]
        ├─dbus-daemon
        ├─gnome-keyring-d─┬─{gdbus}
        │                 ├─{gmain}
        │                 └─{timer}
(僅顯示部份內容)

總結

實際上,前面所提到的不少相關命令信息都是從系統文件中獲取的,例如/proc/meminfo保存了內存相關信息,/proc/net/dev保存網絡流量相關信息。只是,它們都是靜態數值,可是咱們能夠結合watch命令來動態地觀察這些信息,例如:

watch -n 1 cat /proc/meminfo 
watch -n 1 cat /proc/net/dev

上面的命令表示,每隔一秒執行一次cat /proc/meminfo或cat /proc/net/dev,所以咱們能夠看到內存信息或網卡流量信息在實時刷新。

本文僅介紹這些命令的經典使用,更多使用可經過man 命令查看。經過前面這些系統自帶命令,咱們能夠比較方便地監控系統狀態,從而幫助咱們維護系統或定位問題。歡迎留言補充或更正。

本文轉自Linux愛好者!

相關文章
相關標籤/搜索