Linux 常用命令:系統狀態篇

来源:https://www.cnblogs.com/cy-8593/archive/2018/11/23/10004254.html
-Advertisement-
Play Games

前言 Linux常用命令中,有些命令可以用於查看系統的狀態,通過瞭解系統當前的狀態,能夠幫助我們更好地維護系統或定位問題。本文就簡單介紹一下這些命令。 1. 查看系統運行時間 uptime 有時候我們想知道系統上一次複位是在什麼時候或者系統已經運行了多長時間,我們可以通過uptime命令獲取這些信息 ...


前言

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

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

有時候我們想知道系統上一次複位是在什麼時候或者系統已經運行了多長時間,我們可以通過uptime命令獲取這些信息:

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

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

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

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

通過who命令可以查看到哪些用戶通過哪個ip登錄到了這台主機。

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

例如:

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)等信息

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

環境變數影響著程式的運行,因此有時候需要查看當前環境的環境變數:export

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

du命令直接顯示當前目錄下每個目錄及其文件占用空間。結合--max-depth參數可以指定顯示的目錄層級。
例如,如果只想顯示當前目錄下各個目錄所占總空間,可以使用:

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愛好者!


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • whereis 查找命令的位置,包括執行文件、源代碼、手冊文件。 此命令的適用範圍:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。 1、語法 whereis [選項] cmd whereis [-bmsu] [-BMS directory... -f] ...
  • 、什麼是運維?什麼是游戲運維? 1)運維是指大型組織已經建立好的網路軟硬體的維護,就是要保證業務的上線與運作的正常, 在他運轉的過程中,對他進行維護,他集合了網路、系統、資料庫、開發、安全、監控於一身的技術 運維又包括很多種,有DBA運維、網站運維、虛擬化運維、監控運維、游戲運維等等 2)游戲運維又 ...
  • 今天運營同事給我說在用ueditor編寫文章的時候上傳圖片報錯,錯誤信息為 , 翻譯過來就是請求實體太大,這是因為伺服器(我們的伺服器是Nginx)對上傳的文件大小是有限制的,我們修改Nginx的配置文件把允許上傳的文件大小配置大一些即可,在nginx.conf的http模塊增加 這是我把上傳文件的 ...
  • 測試 有點點激動 ...
  • ifconfig command not found 請先檢查機器是不是可以聯網,下麵的方法僅適用於可以聯網的機器 輸入ip addr確認ip地址時候設置正常,設置好的如下圖所示,如果沒有獲取到則自己進行設置 檢查sbin目錄是不是存在,直接cd就行 確認ifconfig是不是安裝, 打開 cd /... ...
  • 1. 如何創建一個定時任務,通過systemd系統 <! TOC "1. 如何創建一個定時任務,通過systemd系統" "1.1. systemd中的timer" "1.2. 自定義定時任務" "1.2.1. 具體步驟" "1.2.2. [Timer]區塊屬性詳情" "1.3. 刪除定時器" <! ...
  • 1..配置日誌文件路徑 命令:pm2 start /home/admin/node/fotonIp/bin/www --name ip -i 4 -o "/app/node/logs/out.log" -e "/app/node/logs/err.log" 2. 利用 pm2_logrotate 來 ...
  • [TOC] 一、Docker介紹 1.1 什麼是Docker ​ Docker是一個開源的應用容器引擎,使用Go語言開發,基於Linux內核的cgroup,namespace,Union FS等技術,對應用進程進行封裝隔離,並且獨立於宿主機與其他進程,這種運行時封裝的狀態稱為容器。 ​ Docker ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...