Linux-程式管理

eacape發表於2022-01-17

程式檢視

  • ps aux
    psprocess status的縮寫,也就是程式狀態的意思.
    引數資訊

    • a:all顯示所用程式,不僅顯示當前使用者啟動的程式
    • u:以user為主的格式輸出程式資訊
    • x:顯示當前使用者所有終端下的程式
      返回資訊

      USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
      root         1  0.0  0.2  44672  3864 ?        Ss   1月15   0:02 /usr/lib/syste
      root         2  0.0  0.0      0     0 ?        S    1月15   0:00 [kthreadd]
      root         4  0.0  0.0      0     0 ?        S<   1月15   0:00 [kworker/0:0H]
      
  • USER 啟動該程式的使用者
  • PID 程式號
  • %CPU cpu佔有率(%)
  • %MEM 記憶體佔有率(%)
  • VSZ 佔用虛擬記憶體(swap空間)的大小
  • RSS 佔用常駐記憶體(實體記憶體)的大小
  • TTY 程式在哪個終端上執行,?代表未知或不需要終端
  • STAT 表示程式狀態

    • S 睡眠
    • R 執行
    • Z 僵死
    • < 高優先順序
    • N 低優先順序
    • s 父程式
    • + 前臺程式
  • START 程式開始的時間
  • TIME 程式執行了多長時間
  • COMMAND 啟動該程式的命令
  • ps ef
    引數資訊

    • e:顯示系統內所有程式的資訊
    • f:full使用完整格式顯示程式資訊
      顯示資訊
      基本與aux 類似
  • top
    顯示資訊

    top - 01:25:39 up  5:25,  4 users,  load average: 0.03, 0.06, 0.07
    Tasks: 101 total,   4 running,  97 sleeping,   0 stopped,   0 zombie
    %Cpu(s):  1.3 us,  1.7 sy,  0.0 ni, 97.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
    KiB Mem :  1882012 total,   404536 free,   199104 used,  1278372 buff/cache
    KiB Swap:        0 total,        0 free,        0 used.  1486184 avail Mem 
    
      PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND   
     1056 root      20   0   51136   1112    772 R  0.7  0.1   2:33.37 rshim        
        1 root      20   0   44672   3864   2444 S  0.0  0.2   0:02.64 systemd 
    • 第一行,任務佇列資訊,和uptime命令執行的結果相同

      系統時間: 01:25:39

      執行時間: up 5:25

      當前登入使用者: 4 users

      負載均衡: load average: 0.03, 0.06, 0.07 三個數字分別表示 1分鐘 5分鐘 15分鐘的負載

    • 第二行,任務

      Tasks: 101 total, 4 running, 97 sleeping, 0 stopped, 0 zombie 總程式:101 執行:4 休眠:97 停止:0 殭屍程式:0
    • 第三行,cpu佔有率

      %Cpu(s): 1.3 us, 1.7 sy, 0.0 ni, 97.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
      • us - 使用者空間(user space):1.3%
      • sy - 核心空間(sysctl):1.7%
      • ni - 改變過優先順序的程式(nice):0.0%
      • id - 空閒cpu(idol):97.0%
      • wa - io等待(wait):0.0%
      • hi - 硬中斷佔用(Hardware IRQ):0.0%
      • si - 軟中斷佔用(Software Interrupts):0.0%
    • 第四行,記憶體狀態

      KiB Mem : 1882012 total, 404536 free, 199104 used, 1278372 buff/cache 總記憶體量 = 空閒記憶體 + 被使用記憶體 + 快取的記憶體量
    • 第五行,swap交換分割槽資訊

      KiB Swap: 0 total, 0 free, 0 used. 1486184 avail Mem

      linux為了提高讀寫效率和速度,會將檔案在記憶體中進行快取,這一部分就是快取記憶體cache memory,即使你的程式執行結束後這部分記憶體也不會被釋放,這就導致你的linux系統中程式頻繁讀寫檔案後,可用實體記憶體變少,當變少到實體記憶體不夠用時,就需要實體記憶體釋放出來一部分空間,這部分被釋放出來的空間資訊會暫時被保留在swap空間當中,等到程式要執行需要這部分資料時,再從Swap分割槽中將其恢復到記憶體當中,所以當Swapused值在頻繁變化時,就說明此時,系統的實體記憶體不夠用了.

      • 第六行,欄位含義與ps aux基本相似
        top -p 程式pid 可以只看對應pid的程式資訊

    程式控制

    程式優先順序控制

    nice -n 10 XXX: 將xxx程式啟動時使用nice命令可以設定它的優先順序為10,這個數值的範圍是(-20~19),數值越小,優先順序越高.
    renice -n -20 17265:將pid = 17265的程式的優先順序重新設定為-20

    程式作業控制

    ./xxx.sh & 將要啟動的程式,後臺執行.
    jobs 可以檢視後臺執行的程式.

    [2]+ 執行中 nice -n 10 ./minio server /data/minio.data/ &

    fg 2 : fg + jobs編號將程式提到前臺.
    ctrl + z : 將程式變為停止狀態.
    bg 2 : bg + jobs編號後臺執行這個程式.

    服務管理工具

    servicesystemctlLinux管理服務的兩種方式.

  • service實際上是去/etc/init.d目錄下去執行相關程式

    service redis start
    等同於
    /etc/init.d/redis start
    

    service xxx start 開啟服務

    service xxx stop 關閉服務

    service xxx restart 重啟服務

    service xxx status 檢視服務狀態

  • systemctlLinux最新的初始化系統init,作用是提高系統的啟動速度,systemctl也相容service命令,即systemctl也會到init.d目錄下去執行相關程式.

    systemctl start xxx開啟服務

    systemctl stop xxx 關閉服務

    systemctl restart xxx 重啟服務

    systemctl status xxx 檢視服務狀態

    systemctl reload xxx 重新載入服務

    systemctl enable xxx 開機啟動服務

    systemctl disable xxx 開機停止服務

相關文章