ps 查看進程,列出執行ps命令的那個時刻的進程快照。如果想要動態顯示,使用top命令 參數格式: UNIX格式:一個"-"開頭 BSD格式:沒有"-"開頭 GNU長格式:兩個"-"開頭 a # 顯示與終端相關的所有進程,包含每個進程的完整路徑 u # 顯示進程的用戶信息 x # 顯示與終端無關的所 ...
ps
查看進程,列出執行ps命令的那個時刻的進程快照。如果想要動態顯示,使用top命令
參數格式:
UNIX格式:一個"-"開頭
BSD格式:沒有"-"開頭
GNU長格式:兩個"-"開頭
a # 顯示與終端相關的所有進程,包含每個進程的完整路徑
u # 顯示進程的用戶信息
x # 顯示與終端無關的所有進程
-a # 顯示所有終端下執行的進程
-u # 顯示指定用戶相關的進程信息
-e # 顯示所有進程
-f # 額外顯示UUID PPID C與STIME欄位
f # 顯示進程樹
-H # 顯示進程樹
-I # 以詳細的格式來顯示進程的狀況
-o # 自定義輸出指定欄位,以逗號分隔
[root@centos7 ~]# ps PID TTY TIME CMD 1525 pts/0 00:00:00 bash 1884 pts/0 00:00:00 ps [root@centos7 ~]# ps -ef # 常用組合,UNIX格式組合 -e -f ,額外顯示UID,PPID,C與STIME欄位 UID PID PPID C STIME TTY TIME CMD root 1 0 0 10:04 ? 00:00:01 /usr/lib/systemd/systemd --switched-rroot 2 0 0 10:04 ? 00:00:00 [kthreadd] root 3 2 0 10:04 ? 00:00:00 [ksoftirqd/0] root 5 2 0 10:04 ? 00:00:00 [kworker/0:0H] root 7 2 0 10:04 ? 00:00:00 [migration/0]
# UID # 進程被該UID所擁有
# PID # 進程的標識號
# PPID # 進程的父進程的標識號
# C # CPU使用的資源百分比
# STIME # 進程開始的時間
# tty # 該進程實在哪個終端機上面運作,若與終端無關,則顯示?,tty1-tty6是本機上面的登入者進程,pts/0表示網路連接進主機的進程
# TIME # 進程所使用的總的CPU時間
# CMD # 正在執行的命令
[root@centos7 ~]# ps aux # BSD格式參數,使用a選項和x選項顯示所有進程 u顯示進程的用戶信息
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.2 43680 4052 ? Ss 10:04 0:01 /usr/lib/systemd/systroot 2 0.0 0.0 0 0 ? S 10:04 0:00 [kthreadd] root 3 0.0 0.0 0 0 ? S 10:04 0:00 [ksoftirqd/0] root 5 0.0 0.0 0 0 ? S< 10:04 0:00 [kworker/0:0H] root 7 0.0 0.0 0 0 ? S 10:04 0:00 [migration/0]
# USER 該進程所屬用戶
# PID 該進程的進程號
# %CPU 該進程使用掉的CPU資源百分比
# %MEM 該進程所占用的記憶體百分比
# VSZ 該進程使用掉的虛擬記憶體量
# RSS 該進程占用的固定的記憶體量
# TTY 該進程在那個終端機上面運行的
# STAT
R 正在運行 S 正在中斷睡眠中 D 不可中斷睡眠 T 正在偵測或者是停止了 Z 已經終止,或者zombie僵死進程,
+ 前臺進程 l 多線程進程 N 低優先順序進程 < 高優先順序進程 s 進程領導者 L 已將頁面鎖定到記憶體中
# START 該進程被觸發啟動的時間
# TIME 該進程實際使用CPU運作的時間
# COMMAND 該進程的實際命令
[root@centos7 ~]# ps -l # UNIX格式參數,使用參數-l以詳細的格式顯示進程的狀況
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
4 S 0 1525 1419 0 80 0 - 29122 do_wai pts/0 00:00:00 bash
0 R 0 1898 1525 0 80 0 - 38300 - pts/0 00:00:00 ps
# F 代表這個進程的flag,4代表超級用戶
# S 代表這個進程的狀態(STAT),
# PRI 優先順序Priorty的縮寫,執行順訊
# NI NICE值
# ADDR 指出該進程在記憶體那個部分,如果是個running進程,一般是“-”
# SZ 使用掉的記憶體大小
# WCHAN 進程是否在運行當中,-表示正在運行
pgrep
顯示指定進程的pid命令,ps和grep命令的結合
-u 顯示指定用戶的所有進程號
[root@centos7 ~]# pgrep sshd 1251 1419 [root@centos7 ~]# pgrep -u root 1 2 3
kill
終止進程
kill [-s signal|-p] [-q sigval] [-a] [--] pid...
-l 列出全部的信號名稱
-p 指定kill命令只列印相關進程的進程號
-s 指定要發送的信號
[root@centos7 ~]# kill -l 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM 16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP [root@centos7 ~]# kill -l 9 KILL # HUP(1) 掛起,通常因終端掉線,或用戶退出而引發 # INT2(2) 中斷, # QUIT(3) 退出 # KILL(9) 立即結束進程的運行 # TERM(15) 終止,系統關機時發送 # TSTP 暫停進程的運行, [root@centos7 ~]# kill -9 進程號碼
# mysql進程嚴禁使用kill -9 強制殺死
特殊信號“0”
# kill有個特殊信號0,使用格式,kill -0 $pid 其中的-0表示不發送任何信號給$pid對應的進程,
但是仍然會對$pid是否存在對應的進程進行檢查,若進程存在,返回0.反之,返回1 一般腳本中會用到,來寫一個管理系統服務的腳本
killall
通過進程名終止進程,需要連續執行幾次
-u 終止指定用戶的進程
-w 等待所有被終止的進程死去,如果進程停留在僵死狀態,那麼killall可能會永久等待
pkill
通過進程名終止指定的進程,可殺死指定進程及子進程
-t # 殺死指定終端的進程
-u # 殺死指定用戶的進程
[root@centos7 ~]# w 13:59:12 up 3:54, 1 user, load average: 0.08, 0.03, 0.05 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT root pts/0 10.0.0.1 10:04 8.00s 0.21s 0.05s w [root@centos7 ~]# pkill crond # 通過進程名 [root@centos7 ~]# systemctl status crond.service [root@centos7 ~]# pkill -t tty1 # 通過終端名 [root@centos7 ~]# pkill -u root # 通過用戶名
top
實時地對系統處理器狀態進行監控,能夠實時地顯示系統中各個進程占用的狀況
-a # 將進程按照使用記憶體排序
-b # 批處理的模式顯示進程信息,輸出結果可以傳遞給其他程式或寫入到文件中,配合-n使用,一直打到-n設置的閾值
-c # 顯示進程的整個命令路徑,而不是只顯示命令名稱
-d # 指定每兩次屏幕信息刷新之間的時間間隔
-H # 指定這個可以顯示每個線程的情況,否則就是進程的總的狀態
-i # 不顯示閑置或者僵死的進程狀態
-n # top輸出信息更新的次數,完成後將推出top命令
-p # 顯示指定的進程信息
互動式命令及說明
h 幫助 Z 全局顏色配置 B 全局字體加粗設置
l 顯示平均負載和啟動時間信息 t 顯示進程和CPU狀態信息
m 顯示記憶體信息 1 數字1,用於多核CPU監控,可監控每個邏輯CPU的狀況
。。。。。。。
可以自查瞭解
top - 14:27:26 up 4:22, 1 user, load average: 0.08, 0.03, 0.05
Tasks: 96 total, 2 running, 94 sleeping, 0 stopped, 0 zombie %Cpu(s): 0.0 us, 0.3 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem : 1865284 total, 1460360 free, 96264 used, 308660 buff/cache KiB Swap: 1048572 total, 1048572 free, 0 used. 1595216 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 2029 root 20 0 0 0 0 R 0.3 0.0 0:00.14 kworker/0:1
第一行:任務隊列信息,同uptime命令的執行結果
14:27:26 # 當前系統時間
up 4:26 # 系統已經運行了4個半小時
1 user # 當前有1個用戶登錄系統
load average: 0.08, 0.03, 0.05 # 1分鐘,5分鐘,15分鐘的平均負載情況
第二行:Tasks為任務(進程)。上面的信息顯示為
共有96個進程,處於運行狀態的有2個,94個在休眠,stoped狀態0個,zombie狀態有0個
第三行:CPU狀態信息
us # 用戶空間占用CPU的百分比
sy # 內核空間占用cpu的百分比
ni # 改變優先順序的進程占用CPU的百分比
id # 空閑CPU百分比
wa # I/O等待只用CPU的百分比
hi # 硬中斷占用CPU的百分比
si # 軟中斷
st # 虛擬機占用CPU的百分比
第四行:記憶體狀態
total # 物理記憶體總量
used # 使用中的記憶體總量
free # 空閑記憶體總量
buffers # 緩衝的記憶體量
第五行:swap交換分區信息
total # 交換分區總量
used # 使用的交換區總量
free # 空閑交換區總量
cached # 緩存的記憶體量
第六行:給出的各進程(任務)的狀態監控
PID # 進程iD
USER # 進程所有者
PR # 進程優先順序
NI # nice值,負值表示高優先順序,正值表示低優先順序
VIRT # 進程使用的虛擬記憶體總量,單位為KB
RES # 進程使用的,未被換出的物理記憶體大小,單位KB
SHR # 共用記憶體大小,單位為kb
S # 進程狀態,D=不可中斷的睡眠狀態,R=運行,S=睡眠,T=跟蹤/停止,Z=僵屍進程
%CPU # 上次更新到現在的CPU時間占用百分比
%MEM # 進程使用的物理記憶體百分比
TIME+ # 進程使用的物理記憶體百分比
COMMAND # 進程名稱
nohup
用戶退出系統進程繼續工作。可以將程式以忽略掛起信號的方式運行起來,被運行程式的輸出信息將不會顯示到終端
輸出信息寫入到當前目錄的nohup.out文件中,如果當前目錄的nohup.out文件不可寫,則輸出重定向到$HOME/nohup.out
strace
跟蹤進程的系統調用,是一款程式調試工具,主要檢車一個應用程式所使用的系統調用以及他所接收的系統信息
-c 統計每一個系統調用所執行的時間,次數,和出錯的次數
-d 輸出關於標準錯誤的調試信息
-f 跟蹤目標進程,以及目標進程創建的所有子進程
-i 輸出系統調用的入口指針
-q 進位輸出關於脫離的消息
-r 輸出每一個系統調用的相對時間
-t 在輸出的每一行前調用的相對時間
-T 顯示每次系統調用所花費的時間
-v 對於某些相關調用,把完整的環境變數,文件stat結構等列印出來
-x 以16進位形式輸出非標準字元串
-e 輸出過濾器,通過表達式,可以過濾掉你不想要的輸出
-o 將strace的輸出寫入文件filename
-p pid 指定要跟蹤的進程pid,要同時跟蹤多個pid,重覆多次-p選項即可
[root@centos7 ~]# strace -tt -f /etc/init.d/network [root@centos7 ~]# strace -c /etc/init.d/network Usage: /etc/init.d/network {start|stop|status|restart|reload|force-reload} % time seconds usecs/call calls errors syscall ------ ----------- ----------- --------- --------- ---------------- 44.53 0.000839 168 5 clone 27.44 0.000517 1 382 rt_sigprocmask 6.53 0.000123 5 26 read # 上面的結果告訴我們調用了哪些系統函數,調用的次數是多少,消耗了多少時間等信息,這對我們分析程式來說是非常有用的
ltrace
ltrace能夠跟蹤進程的庫函數調用,它會顯現出調用了那個庫函數,而strace則是跟蹤進程的每個系統調用
和strace參數公用
runlevel
輸出當前Linux系統的運行級別
0 停機
1 單用戶模式
2 無網路的多用戶模式
3 多用戶模式
5 圖形界面多用戶模式
6 重啟
init
初始化Linux進程,是所有Linux進程的父進程,進程號為1,主要任務一句/etc/inittab創建linux進程
service
[root@centos7 ~]# service --status-all # 顯示所有服務狀態
管理系統服務,比如start|stop|status|reload等等