1、pstree命令:顯示進程樹
[root@localhost ~]# pstree init─┬─auditd───{auditd} ├─crond ├─dbus-daemon───{dbus-daemon} ├─httpd───3*[httpd───26*[{httpd}]] ├─master─┬─pickup │ └─qmgr ├─6*[mingetty] ├─mysqld_safe───mysqld───20*[{mysqld}] ├─rsyslogd───3*[{rsyslogd}] ├─sshd───sshd───bash───pstree └─udevd───2*[udevd]
# Linux系統各進程的相關信息均保存在/proc/PID目錄下的各文件中
2、ps命令:顯示進程的當前狀態
命令格式:ps [ OPTION ] ...
(1)常用組合:aux
a: 與終端相關的進程;
u: 以用戶爲中心組織進程狀態信息顯示
x: 與終端無關的進程;
[root@localhost ~]# ps aux | head -8 USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.1 0.0 19232 1512 ? Ss 07:32 0:01 /sbin/init root 2 0.0 0.0 0 0 ? S 07:32 0:00 [kthreadd] root 3 0.0 0.0 0 0 ? S 07:32 0:00 [migration/0] root 4 0.0 0.0 0 0 ? S 07:32 0:00 [ksoftirqd/0] root 5 0.0 0.0 0 0 ? S 07:32 0:00 [stopper/0] root 6 0.0 0.0 0 0 ? S 07:32 0:00 [watchdog/0] root 7 0.0 0.0 0 0 ? S 07:32 0:00 [migration/1]
各字段解析:
VSZ: Virtual memory SiZe,虛擬內存集
RSS: ReSident Size, 常駐內存集
STAT:進程狀態
R:running,運行中
S: interruptable sleeping,可中斷睡眠
D: uninterruptable sleeping,不可中斷睡眠
T: stopped,停止狀態
Z: zombie,殭屍狀態
+: 前臺進程
l: 多線程進程
N:低優先級進程
<: 高優先級進程
s: session leader
(2)常用組合:-ef
-e: 顯示所有進程
-f: 顯示完整格式程序信息
(3)常用組合:-eFH
-F: 顯示完整格式的進程信息
-H: 以進程層級格式顯示進程相關信息
ni: nice值
pri: priority,優先級
psr: processor, CPU
rtprio: 實時優先級
3、pgrep, pkill
pgrep [options] pattern:根據進程相關屬性查找進程
pkill [options] pattern:發送信號(signal)到指定進程
options:
-u uid: effective user
-U uid: real user
-t terminal: 與指定終端相關的進程
-l: 顯示進程名
-a: 顯示完整格式的進程名
-P pid: 顯示其父進程爲此處指定的進程的進程列表
4、pidof: 根據進程名獲取其PID
[root@localhost ~]# pidof httpd 1455 1454 1453 1411
5、top and htop :顯示進程相關信息
(1)top命令:
排序:
P:以佔據的CPU百分比;
M:佔據內存百分比;
T:累積佔據CPU時長;
首部信息顯示:
uptime信息:l命令
tasks及cpu信息:t命令
cpu分別顯示:1 (數字)
memory信息:m命令
退出命令:q
修改刷新時間間隔:s
終止指定進程:k
選項:
-d #: 指定刷新時間間隔,默認爲3秒;
-b: 以批次方式;
-n #: 顯示多少批次;
[root@localhost ~]# top -d 3 -b -n 2
(2)htop命令:
選項:
d #: 指定延遲時間;
-u UserName: 僅顯示指定用戶的進程;
-s COLOMN: 以指定字段進行排序;
命令:
s: 跟蹤選定進程的系統調用;
l: 顯示選定進程打開的文件列表;
a:將選定的進程綁定至某指定CPU核心;
t: 顯示進程樹
6、vmstat命令:虛擬內存狀態信息顯示
命令格式:vmstat [options] [delay [count]]
選項: -s: 顯示內存的統計數據
各字段解析:
procs:
r:等待運行的進程的個數;
b:處於不可中斷睡眠態的進程個數;(被阻塞的隊列的長度);
memory:
swpd: 交換內存的使用總量;
free:空閒物理內存總量;
buffer:用於buffer的內存總量;
cache:用於cache的內存總量;
swap:
si:數據進入swap中的數據速率(kb/s)
so:數據離開swap中的數據速率(kb/s)
io:
bi:從塊設備讀入數據到系統的速率;(kb/s)
bo: 保存數據至塊設備的速率;
system:
in: interrupts, 中斷速率;
cs: context switch, 進程切換速率;
cpu:
us:用戶空間所佔CPU使用時間比例
sy:內核空間所佔比例
id:空閒時間所佔比例
wa:等待IO時間所佔比例
st:虛擬機偷盜CPU時間所佔比例
7、glances命令:
glances [-bdehmnrsvyz1] [-B bind] [-c server] [-C conffile] [-p port] [-P password] [--password]
[-t refresh] [-f file] [-o output]
內建命令:
a Sort processes automatically l Show/hide logs
c Sort processes by CPU% b Bytes or bits for network I/O
m Sort processes by MEM% w Delete warning logs
p Sort processes by name x Delete warning and critical logs
i Sort processes by I/O rate 1 Global CPU or per-CPU stats
d Show/hide disk I/O stats h Show/hide this help screen
f Show/hide file system stats t View network I/O as combination
n Show/hide network stats u View cumulative network I/O
s Show/hide sensors stats q Quit (Esc and Ctrl-C also work)
y Show/hide hddtemp stats
常用選項:
-b: 以Byte爲單位顯示網卡數據速率;
-d: 關閉磁盤I/O模塊;
-f /path/to/somefile: 設定輸入文件位置;
-o {HTML|CSV}:輸出格式;
-m: 禁用mount模塊
-n: 禁用網絡模塊
-t #: 延遲時間間隔
-1:每個CPU的相關數據單獨顯示;
C/S模式下運行glances命令:
服務模式:
glances -s -B IPADDR(IPADDR: 指明監聽於本機哪個地址)
客戶端模式:
glances -c IPADDR(IPADDR:要連入的服務器端地址)
8、dstat命令:生成系統資源統計信息工具
dstat [-afv] [options..] [delay [count]]
options:-c: 顯示cpu相關信息;
-C #,#,...,total
-d: 顯示disk相關信息;
-D total,sda,sdb,...
-g:顯示page相關統計數據;
-m: 顯示memory相關統計數據;
-n: 顯示network相關統計數據;
-p: 顯示process相關統計數據;
-r: 顯示io請求相關的統計數據;
-s: 顯示swapped相關的統計數據;
--tcp:顯示tcp連接狀態
(listen, established, syn, time_wait, close)
--udp:顯示udp連接狀態信息
--unix:unix域套接字狀態信息
--raw:raw套接字狀態信息
--socket:套接字狀態信息
--ipc:ipc狀態信息
--top-cpu:顯示最佔用CPU的進程;
--top-io: 顯示最佔用io的進程;
--top-mem: 顯示最佔用內存的進程;
--top-lantency: 顯示延遲最大的進程;
例:延時爲2,顯示5次
9、sar:收集報告或保存系統活動信息
命令格式:sar [options] [-A] [ -o [ filename ]] t [n]
t:採樣間隔
n:採樣次數,默認值是1;
-o filename :將命令結果以二進制格式保存在文件中。
options :
-A:所有報告的總和
-u:輸出CPU使用情況的統計信息
-v:輸出inode、文件和其他內核表的統計信息
-d:輸出每一個塊設備的活動信息
-r:輸出內存和交換空間的統計信息
-b:顯示I/O和傳送速率的統計信息
-a:文件讀寫情況
-c:輸出進程統計信息,每秒創建的進程數
-R:輸出內存頁面的統計信息
-y:終端設備活動情況
-w:輸出系統交換活動信息
[root@localhost ~]# sar-u -o sar.txt 2 3 Linux 2.6.32-504.el6.x86_64 (localhost.localdomain) 09/26/2015 _x86_64_ (1 CPU) 11:28:25 PM CPU %user %nice %system %iowait %steal %idle 11:28:27 PM all 0.50 0.00 1.98 0.99 0.00 96.53 11:28:29 PM all 0.00 0.00 1.51 1.51 0.00 96.98 11:28:31 PM all 0.00 0.00 1.50 1.50 0.00 97.00 Average: all 0.17 0.00 1.66 1.33 0.00 96.84
[root@localhost ~]# sar -r 2 3 Linux 2.6.32-504.el6.x86_64 (localhost.localdomain) 09/26/2015 _x86_64_ (1 CPU) 11:29:54 PM kbmemfree kbmemused %memused kbbuffers kbcached kbcommit %commit 11:29:56 PM 1597996 308496 16.18 20496 162756 91560 3.10 11:29:58 PM 1597872 308620 16.19 20496 162756 91560 3.10 11:30:00 PM 1597872 308620 16.19 20496 162756 91560 3.10 Average: 1597913 308579 16.19 20496 162756 91560 3.10
[root@localhost ~]# sar -d -p 2 1 Linux 2.6.32-504.el6.x86_64 (localhost.localdomain) 09/26/2015 _x86_64_ (1 CPU) 11:34:28 PM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util 11:34:30 PM sda 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 11:34:30 PM sdb 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 11:34:30 PM sr0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 Average: DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util Average: sda 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 Average: sdb 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 Average: sr0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
常用選項:
查看CPU: sar -u、 sar -q
查看內存:sar -B、sar -r、sar -W
查看I/O: sar -b、sar -u、sar -d -p
10、kill命令:向進程發送控制信號,以實現對進程管理
顯示當前系統可用信號:
# kill -l
# man 7 signal
常用信號:
1) SIGHUP: 無須關閉進程而讓其重讀配置文件;
2) SIGINT: 中止正在運行的進程;相當於Ctrl+c;
9) SIGKILL: 殺死正在運行的進程;
15) SIGTERM:終止正在運行的進程;
18) SIGCONT:
19) SIGSTOP:
指定信號的方法:
(1) 信號的數字標識;1, 2, 9
(2) 信號完整名稱;SIGHUP
(3) 信號的簡寫名稱;HUP
向進程發信號:
kill [-SIGNAL] PID...
終止“名稱”之下的所有進程:
killall [-SIGNAL] Program
11、nice and renice:進程優先級調整
靜態優先級:100-139
進程默認啓動時的nice值爲0,優先級爲120;
nice命令:
nice [OPTION] [COMMAND [ARG]...]
renice命令:
renice [-n] priority pid...
查看:
ps axo pid,comm,ni
[root@centos7 ~]# nice -n 5 httpd [root@centos7 ~]# ps -axo pid,comm,ni | grep httpd 6760 httpd 5 6762 httpd 5 6763 httpd 5 6764 httpd 5 [root@centos7 ~]# renice -n 0 `pidof httpd` 6760 (process ID) old priority 5, new priority 0 6762 (process ID) old priority 5, new priority 0 6763 (process ID) old priority 5, new priority 0 6764 (process ID) old priority 5, new priority 0
12、Linux的作業控制
前臺作業:通過終端啓動,且啓動後一直佔據終端;
後臺作業:可以通過終端啓動,但啓動後即轉入後臺運行(釋放終端);
讓作業工作與後臺
(1) 運行中的作業
Ctrl+z
(2) 尚未啓動的作業
# COMMAND &
此類作業雖然被送往後臺運行,但其依然與終端相關;如果希望送往後臺後,剝離與終端的關係:
# nohup COMMAND &
查看所有作業:
# jobs
作業控制:
# fg [[%]JOB_NUM]:把指定的後臺作業調回前臺;
# bg [[%]JOB_NUM]:讓送往後臺的作業在後臺繼續運行;
# kill [%JOB_NUM]:終止指定的作業,必須帶%;