天天看點

linux常用指令:系統管理四、系統管理

目錄

四、系統管理

1、啟動程序

2、監聽程序運作狀态#

指令示範

檢視特定程序結果圖

3、檢視程序樹

指令示範

選項

4、終止程序#

指令示範

信号

5、放入背景指令 &和Ctrl+Z詳解

6、背景指令脫離終端運作#

四、系統管理

1、啟動程序

# 1、前台啟動程序(最常用)
# 啟動一個耗時的程序
# 控制台示範
[[email protected] ~]# find / -name demo.jpg # 從根本目錄查找檔案,非常耗時
^Z # Ctrl + Z 挂起程序。将程序挂起,指的是将前台運作的程序放到背景,并且暫停其運作
[1]+  Stopped                 find / -name demo.jpg
[[email protected] ~]# ps
    PID TTY          TIME CMD
  29793 pts/0    00:00:00 bash
  29818 pts/0    00:00:00 find # 我們剛才執行的find程序,程序号是29818
  29819 pts/0    00:00:00 ps

# 2、背景啟動程序(用的相對較少,除非非常耗時,且不着急需要其運作結果)
# 背景啟動方法:在指令結尾添加一個“&”符号(前面要加空格)
# 控制台示範
[[email protected] ~]# find / -name demo.jpg & # 背景啟動程序
[2] 29835 # 控制台會列印一個程序号
[[email protected] ~]# ps
    PID TTY          TIME CMD
  29793 pts/0    00:00:00 bash
  29818 pts/0    00:00:00 find
  29835 pts/0    00:00:00 find # 背景啟動的程序
  29836 pts/0    00:00:00 ps
           

2、監聽程序運作狀态#

指令示範

# 1、top 指令
# top 指令可以動态地持續監聽程序地運作狀态
# top 指令還提供了互動界面
# 格式
top [選項]

# 選項
-d 秒數:指定 top 指令每隔幾秒更新。預設是 3 秒;
-b:使用批處理模式輸出。一般和"-n"選項合用,用于把 top 指令重定向到檔案中;
-n 次數:指定 top 指令執行的次數。一般和"-"選項合用;
-p 程序PID:僅檢視指定 ID 的程序;
-s:使 top 指令在安全模式中運作,避免在互動模式中出現錯誤;
-u 使用者名:隻監聽某個使用者的程序;

# 在 top 指令的顯示視窗中,還可以使用如下按鍵,進行一下互動操作
? 或 h:顯示互動模式的幫助;
P:按照 CPU 的使用率排序,預設就是此選項;
M:按照記憶體的使用率排序;
N:按照 PID 排序;
T:按照 CPU 的累積運算時間排序,也就是按照 TIME+ 項排序;
k:按照 PID 給予某個程序一個信号。一般用于中止某個程序,信号 9 是強制中止的信号;
r:按照 PID 給某個程序重設優先級(Nice)值;
q:退出 top 指令;

# 控制台示範
# 系統目前時間、系統運作時間、目前登入的使用者數量、系統在1、5、15分鐘前的負載(不超過CPU核數)
top - 10:05:39 up 4 days, 15 min,  1 user,  load average: 0.00, 0.01, 0.00
# 系統中的程序總數、正在運作的程序、說面的程序、停止的程序、僵屍程序(如果不是 0,則需要手工檢查僵屍程序)
Tasks: 110 total,   2 running, 107 sleeping,   1 stopped,   0 zombie
# 使用者模式占用的 CPU 百分比、系統模式占用的 CPU 百分比、系統模式占用的 CPU 百分比
# 空閑 CPU 占用的 CPU 百分比、等待輸入/輸出的程序占用的 CPU 百分比、硬中斷請求服務占用的 CPU 百分比
# 硬中斷請求服務占用的 CPU 百分比、st(steal time)意為虛拟時間百分比,
# 就是當有虛拟機時,虛拟 CPU 等待實際 CPU 的時間百分比
%Cpu(s): 14.3 us,  0.0 sy,  0.0 ni, 85.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
# 實體記憶體的總量,機關為KB、己經使用的實體記憶體數量、空閑的實體記憶體數量、作為緩沖的記憶體數量
MiB Mem :   1818.9 total,     80.4 free,   1399.5 used,    338.9 buff/cache
# 交換分區(虛拟記憶體)的總大小、已經使用的交換分區的大小、已經使用的交換分區的大小、作為緩存的交換分區的大小
MiB Swap:      0.0 total,      0.0 free,      0.0 used.    234.4 avail Mem 

# PID:程序的 ID。
# USER:該程序所屬的使用者。
# PR:優先級,數值越小優先級越高。
# NI:優先級,數值越小、優先級越高。
# VIRT:該程序使用的虛拟記憶體的大小,機關為 KB。
# RES:該程序使用的實體記憶體的大小,機關為 KB。
# SHR:共享記憶體大小,機關為 KB。
# S:程序狀态。
# %CPU:該程序占用 CPU 的百分比。
# %MEM:該程序占用記憶體的百分比。
# TIME+:該程序共占用的 CPU 時間。
# COMMAND:程序的指令名
    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND                               
      1 root      20   0  177364   7232   4232 S   0.0   0.4   0:06.80 systemd                               
      2 root      20   0       0      0      0 S   0.0   0.0   0:00.04 kthreadd                             
      ……

# 下面是一些實戰操作,更多參考http://c.biancheng.net/view/1065.html
# 2、隻檢視特定的程序
top -p 程序号
# 指令
top -p 29818
# 控制台示範[見-檢視特定程序結果圖]

# 3、幫助、退出、殺死程序
# q:退出top指令;
# ?或h:檢視幫助
# k:殺死程序,會提示輸入要殺死程序的PID
# 接下來 top 指令提示我們輸入信号,信号 9 代表強制中止,這時就能夠強制中止該程序了

# 4、其他常用
# "ps aux" 可以檢視系統中所有的程序;
# "ps -le" 可以檢視系統中所有的程序,而且還能看到程序的父程序的 PID 和程序優先級;
# "ps -l" 隻能看到目前 Shell 産生的程序;
           

檢視特定程序結果圖

linux常用指令:系統管理四、系統管理

3、檢視程序樹

指令示範

# 指令格式[見-選項]
pstree [選項] [PID或使用者名]

# pstree
# 控制台示範
[[email protected] ~]# pstree
systemd─┬─AliYunDun───22*[{AliYunDun}]
        ├─AliYunDunUpdate───5*[{AliYunDunUpdate}]
        ├─CmsGoAgent.linu─┬─exe───8*[{exe}]
        │                 └─5*[{CmsGoAgent.linu}]
        ├─NetworkManager───2*[{NetworkManager}]
        ├─2*[agetty]
        ├─aliyun-service───6*[{aliyun-service}]
        ├─assist_daemon───7*[{assist_daemon}]
        ├─atd
        ├─auditd─┬─sedispatch
        │        └─2*[{auditd}]
        ├─chronyd
        ├─containerd───8*[{containerd}]
        ├─containerd-shim─┬─tini───java───39*[{java}]
        │                 └─12*[{containerd-shim}]
        ├─containerd-shim─┬─tini───java───46*[{java}]
        │                 └─12*[{containerd-shim}]
        ├─crond
        ├─dbus-daemon
        ├─dockerd─┬─8*[docker-proxy───4*[{docker-proxy}]]
        │         └─10*[{dockerd}]
        ├─lsmd
        ├─mcelog
        ├─nginx───nginx
        ├─polkitd───5*[{polkitd}]
        ├─rngd───{rngd}
        ├─rsyslogd───2*[{rsyslogd}]
        ├─smartd
        ├─sshd───sshd───sshd───bash───pstree
        ├─sssd─┬─sssd_be
        │      └─sssd_nss
        ├─systemd───(sd-pam)
        ├─systemd-journal
        ├─systemd-logind
        ├─systemd-udevd
        └─tuned───3*[{tuned}]
           

選項

選項 含義
-a 顯示啟動每個程序對應的完整指令,包括啟動程序的路徑、參數等。
-c 不使用精簡法顯示程序資訊,即顯示的程序中包含子程序和父程序。
-n 根據程序 PID 号來排序輸出,預設是以程式名排序輸出的。
-p 顯示程序的 PID。
-u 顯示程序對應的使用者名稱。

4、終止程序#

指令示範

# 格式
kill [信号] PID

# 常用殺死程序,直接kill -9 pid
# 控制台示範
[[email protected] ~]# find / -name demo.jpg
^Z
[1]+  Stopped                 find / -name demo.jpg
[[email protected] ~]# ps
    PID TTY          TIME CMD
  29793 pts/0    00:00:00 bash
  29923 pts/0    00:00:00 find
  29924 pts/0    00:00:00 ps
[[email protected] ~]# kill -9 29923 # 殺死程序
[[email protected] ~]# ps
    PID TTY          TIME CMD
  29793 pts/0    00:00:00 bash
  29925 pts/0    00:00:00 ps
[1]+  Killed                  find / -name demo.jpg ¥# 被殺死
           

信号

信号編号 信号名 含義
EXIT 程式退出時收到該資訊。
1 HUP 挂掉電話線或終端連接配接的挂起信号,這個信号也會造成某些程序在沒有終止的情況下重新初始化。
2 INT 表示結束程序,但并不是強制性的,常用的 "Ctrl+C" 組合鍵發出就是一個 kill -2 的信号。
3 QUIT 退出。
9 KILL 殺死程序,即強制結束程序。
11 SEGV 段錯誤。
15 TERM 正常結束程序,是 kill 指令的預設信号。

5、放入背景指令 &和Ctrl+Z詳解

# & 在背景處于【執行】狀态,繼續執行,執行完之後會有提示,有輸出會輸出
# 放入背景執行的指令不能與前台有互動,否則這個指令是不能在背景執行的

# 指令執行過裎中按 Ctrl+Z 快捷鍵,指令在背景處于【暫停】狀态
           

6、背景指令脫離終端運作#

# 上面的放入背景指令 &和Ctrl+Z指令,隻是目前登陸終端的背景,而不是遠端伺服器的背景,在程式運作結束之前登出,這個背景指令就不會繼續執行了!
# 我們需要在遠端終端執行某些背景指令,有以下3種方法:
# 1、把需要在背景執行的指令加入 /etc/rc.local 檔案,讓系統在啟動時執行這個背景程式。這種方法的問題是,伺服器是不能随便重新開機的,如果有臨時背景任務,就不能執行了。
# 2、使用系統定時任務,讓系統在指定的時間執行某個背景指令。這樣放入背景的指令與終端無關,是不依賴登入終端的。
# 3、使用 nohup 指令

# nohup 指令
# nohup 指令的作用就是讓背景工作在離開操作終端時,也能夠正确地在背景執行
# 格式
nohup [指令] &
# 注意,這裡的‘&’表示此指令會在終端背景工作;反之,如果沒有‘&’,則表示此指令會在終端前台工作。

# 運作jar程式常用!