linux系統進程查看及管理工具
對于服務器來說重要的IO 設備
磁盤
網絡
pstree,ps,pidof,pgrep,top,htop,glances,pmap,vmstat,dstat,kill,pkill,job,bg,fg,nohup,nice,renice,killall…..
pstree命令:
pstree-display a tree of processes -p 顯示進程樹進程的pid [root@localhost ~]# pstree systemd─┬─NetworkManager─┬─dhclient │ └─2*[{NetworkManager}] ├─abrt-watch-log ├─abrtd ├─alsactl ├─atd ├─auditd─┬─audispd─┬─sedispatch │ │ └─{audispd} │ └─{auditd} ├─bluetoothd ├─chronyd ├─crond ├─cupsd ├─dbus-daemon ├─gssproxy───5*[{gssproxy}] ├─login───bash ├─lsmd ├─lvmetad ├─master─┬─pickup │ └─qmgr ├─polkitd───5*[{polkitd}] ├─rngd ├─rsyslogd───2*[{rsyslogd}] ├─smartd ├─sshd───sshd───bash───pstree ├─systemd-journal ├─systemd-logind ├─systemd-udevd ├─tuned───4*[{tuned}] └─wpa_supplicant
ps
給當前系統進程做一個快照。直顯示命令執行那一刻的狀態。 /proc/:內核中的狀態信息 內核參數: 可設置其值從而調整內核運行特征的參數 狀態變量:其用于輸出內核中統計信息或狀態信息,僅用于參看。 參數:模擬成文件系統類型; 進程: /proc/ 都有一個與其進程號相同的目錄。 進程啟動的方式 系統奇多過程中自動啟動:與終端無關的進程 用戶通過終端啟動:無終端相關的進程
ps有三種風格的選項
有必須帶-
有的必須不能帶-
有的必須–
常用方式
a與終端相關的進程 x與終端無關的進程 u與用戶相關的進程 o 指定要顯示的內容 [ ] 內核啟動的線程 USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND VSZ: Virtual memory SiZe,虛擬內存集,線性內存 RSS: ReSidentSize, 常駐內存集 STAT:進程狀態 R:running S: interruptables leeping 可中斷的 D: uninterruptable sleeping 不可中斷的 T: stopped Z: zombie +: 前臺進程 l: 多線程進程 N:低優先級進程 <: 高優先級進程 s: session leader,會話(子進程)發起者 TIME:該進程累計占用cpu的時間
pgrep/pkill
進程搜索
按預定義的模式:pgrep pgrep[options] patter -u uid: effective user,生效者 -U uid: real user,真正發起運行命令者 -t terminal: 與指定終端相關的進程 -l: 顯示進程名 -a: 顯示完整格式的進程名 -P pid: 顯示父進程為此處指定的進程的進程列表 pgrep -t pts/0 l 顯示pts/0終端運行的進程, l 顯示進程名稱 pgrep -t pts/0 -a 顯示的更詳細,命令的參數都顯示出來。 pgrep -P 24944 -a 24979 passwd 顯示24944的子進程,pid是24979 名稱 passwd
pidof
/sbin/pidof
按確切的程序名稱:
$ pidof bash 顯示系統中運行的bash進程。例如開其了多個終端,就會有多個進程。
系統工具
uptime 顯示當前時間,系統已啟動的時間、當前上線人數,系統平均負載(1、5、15分鐘的平均負載,一般不會超過1) 系統平均負載: 指在特定時間間隔內運行隊列中的平均進程數。 如果每個CPU內核的當前活動進程數不大于3的話,那么系統的性能良好。如果每個CPU內核的任務數大于5,那么這臺機器的性能有嚴重問題。 如果linux主機是1個雙核CPU的話,當Load Average 為6的時候說明機器已經被充分使用了。 [root@localhost]# uptime -p up 6 hours, 48 minutes
進程管理工具
top
實時跟蹤,動態先顯示內存cpu情況
top - 23:53:18 up 7:33, 3 users, load average: 0.05, 0.06, 0.06 ##相當于uptime Tasks: 364 total, 2 running, 362 sleeping, 0 stopped, 0 zombie ##進程信息 %Cpu(s): 0.3 us, 0.3 sy, 0.0 ni, 99.3 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st###cpu信息 KiB Mem : 1001332 total, 113420 free, 168424 used, 719488 buff/cache ##內存信息 KiB Swap: 2098172 total, 2098172 free, 0 used. 611316 avail Mem ##內存信息 上面的信息可以關閉顯示。 top:有許多內置命令: 排序: P:以占據的CPU百分比,%CPU M:占據內存百分比,%MEM T:累積占據CPU時長,TIME+ 首部信息顯示: uptime信息:l命令 tasks及cpu信息:t命令 centos7切換顯示方式或關閉。 cpu分別顯示:1 (數字) memory信息:m命令 退出命令:q 修改刷新時間間隔:s 默認是三秒 不建議刷新間隔太小,會給系統改造成負擔 終止指定進程:k centos7會給出個默認的pid cup使用率最高的??梢允謩又付╬id 選擇pid 然后 Kill PID 1684 with signal [15]:默認發送15號信號。 保存文件:W 存到用戶的家目錄下 默認名字 .toprc 執行top后 輸入上面相應指令集可以操作。 欄位信息簡介 us:用戶空間 sy:內核空間 ni:調整nice時間 id:空閑 wa:等待IO時間 hi:硬中斷 si:軟中斷(模式切換) st:虛擬機偷走的時間 PID (Process Id):任務的進程IDPPID (Parent Process Pid):父任務的進程IDRUSER (Real User Name):任務的所有者真實名稱UID (User Id):任務所有者IDUSER (User Name):任務所有者名稱GROUP (Group Name):任務所有者群組名TTY (Controlling Tty):終端PR (Priority):優先級%CPU (CPU usage):CPU使用率 %MEM (Memory usage (RES)):內存使用率 S (Process Status):進程狀態 TIME+ (CPU Time, hundredths):CPU時間,精確到秒 top [OPENTION] -d #: 指定刷新時間間隔,默認為3秒 -b: 以批次方式 一般情況屏幕顯示不全,-b 一屏的往下翻,循環。 -n #: 顯示多少批次 刷新次數完畢退出,默認是一直刷新,但是時間間隔可以指定-d。 -p cpu使用率排序 (默認) top -d 5 -n 3 每隔5秒刷新一次,刷新3次
htop命令:需從Fedora-EPEL源安裝
默認帶菜單,帶顏色。f1-f10快捷鍵
http://172.16.0.1/fedora-epel/7/x86_64 選項: -d #: 指定延遲時間; -u UserName: 僅顯示指定用戶的進程; -s COLUME: 以指定字段進行排序; 子命令:執行htop以后執行的子命令 s: 跟蹤選定進程的系統調用; l: 顯示選定進程打開的文件列表; a:將選定的進程綁定至某指定CPU核心; t: 顯示進程樹
內存工具
vmstat命令:虛擬內存信息 vmstat[options] [delay [count]] vmstat 2 5 2秒刷新一次,刷新5次 默認刷新一次 [root@localhost ~]# vmstat procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 3 0 8 126136 1596 711028 0 0 13 16 37 40 0 0 99 0 0 顯示完畢就退出
顯示內容
procs: r:等待運行的進程的個數,和核心數有關 b:處于不可中斷睡眠態的進程個數(被阻塞的隊列的長度) memory: swpd: 交換內存的使用總量 free:空閑物理內存總量 buffer:用于buffer的內存總量 cache:用于cache的內存總量 swap: si:從磁盤交換進內存的數據速率(kb/s) so:從內存交換至磁盤的數據速率(kb/s) io: bi:從塊設備讀入數據到系統的速率;(kb/s) bo: 保存數據至塊設備的速率; system: in: interrupts, 中斷速率,包括時鐘 cs: context switch, 進程切換速率 cpu: us:Timespent running non-kernel code. sy: Time spent running kernel code id: Time spent idle. Linux 2.5.41前,包括IO-wait time. wa: Time spent waiting for IO. 2.5.41前,包括in idle. st: Time stolen from a virtual machine. 2.6.11前, unknown. 選項: -s: 顯示內存的統計數據 [root@localhost ~]# vmstat -s 1001332 K total memory 162076 K used memory 316484 K active memory 236640 K inactive memory 126664 K free memory 1596 K buffer memory 710996 K swap cache 2098172 K total swap 8 K used swap 2098164 K free swap 4521 non-nice user cpu ticks 695 nice user cpu ticks 10009 system cpu ticks 2950649 idle cpu ticks 3636 IO-wait cpu ticks 0 IRQ cpu ticks 160 softirq cpu ticks 0 stolen cpu ticks 371505 pages paged in 458693 pages paged out 0 pages swapped in 2 pages swapped out 1086138 interrupts 1188701 CPU context switches 1471940397 boot time 47448 forks
pmap
pmap命令:進程的內存映射 report memory map of a process pmap[options] pid[...] -x: 顯示詳細格式的信息; #pmap 1 另外一種實現: # cat /proc/PID/maps pmap PID -x [root@localhost ~]# pmap 47188 -x 47188: -bash Address Kbytes RSS Dirty Mode Mapping 0000000000400000 884 648 0 r-x-- bash 00000000006dc000 4 4 4 r---- bash 00000000006dd000 36 36 36 rw--- bash 00000000006e6000 24 24 24 rw--- [ anon ] 0000000001f1b000 1456 1328 1328 rw--- [ anon ] 00007f1d2f25f000 103580 52 0 r---- locale-archive 00007f1d35786000 44 20 0 r-x-- libnss_files-2.17.so 00007f1d35791000 2044 0 0 ----- libnss_files-2.17.so 00007f1d35990000 4 4 4 r---- libnss_files-2.17.so 00007f1d35991000 4 4 4 rw--- libnss_files-2.17.so 00007f1d35992000 24 0 0 rw--- [ anon ] 00007f1d35998000 1752 660 0 r-x-- libc-2.17.so 00007f1d35b4e000 2048 0 0 ----- libc-2.17.so 00007f1d35d4e000 16 16 16 r---- libc-2.17.so 00007f1d35d52000 8 8 8 rw--- libc-2.17.so 00007f1d35d54000 20 20 20 rw--- [ anon ] 00007f1d35d59000 12 8 0 r-x-- libdl-2.17.so 00007f1d35d5c000 2044 0 0 ----- libdl-2.17.so 00007f1d35f5b000 4 4 4 r---- libdl-2.17.so 00007f1d35f5c000 4 4 4 rw--- libdl-2.17.so 00007f1d35f5d000 148 124 0 r-x-- libtinfo.so.5.9 00007f1d35f82000 2048 0 0 ----- libtinfo.so.5.9 00007f1d36182000 16 16 16 r---- libtinfo.so.5.9 00007f1d36186000 4 4 4 rw--- libtinfo.so.5.9 00007f1d36187000 132 116 0 r-x-- ld-2.17.so 00007f1d3638f000 12 12 12 rw--- [ anon ] 00007f1d3639e000 4 4 4 rw--- [ anon ] 00007f1d3639f000 28 24 0 r--s- gconv-modules.cache 00007f1d363a6000 8 8 8 rw--- [ anon ] 00007f1d363a8000 4 4 4 r---- ld-2.17.so 00007f1d363a9000 4 4 4 rw--- ld-2.17.so 00007f1d363aa000 4 4 4 rw--- [ anon ] 00007fff60224000 132 24 24 rw--- [ stack ] 00007fff602a7000 8 4 0 r-x-- [ anon ] ffffffffff600000 4 0 0 r-x-- [ anon ] ---------------- ------- ------- ------- total kB 116596 3188 1532
系統監控工具
glances
glances命令:EPEL源 交直觀的現實系統狀態,cpu 內存 進程 文件系統 網絡 等狀態 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 iSort 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 hddtempstats 常用選項: -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:要連入的服務器端地址
dstat
dstat命令:系統資源統計 dstat[-afv] [options..] [delay [count]] -c: 顯示cpu相關信息 -C #,#,...,total -d: 顯示disk相關信息 -D total,sda,sdb,... -g:顯示page相關統計數據 -m: 顯示memory相關統計數據 -n: 顯示network相關統計數據 -p: 顯示process相關統計數據 -r: 顯示io請求相關的統計數據 -s: 顯示swapped相關的統計數據 --tcp --udp --unix --raw --socket --ipc --top-cpu:顯示最占用CPU的進程 --top-io: 顯示最占用io的進程 --top-mem: 顯示最占用內存的進程 --top-latency: 顯示延遲最大的進程 PLUGINS While anyone can create their own dstat plugins (and contribute them) dstat ships with a number of plugins already that extend its capabilities greatly. Here is an overview of the plugins dstat ships with: 電源 風扇 mysql wifi 報文 網絡 磁盤 cpu........
進程管理工具
kill
kill命令: 向進程發送控制信號,以實現對進程管理 顯示當前系統可用信號:kill -l 常用信號:man 7 signal 1) SIGHUP: 無須關閉進程而讓其重讀配置文件 systemctl reload SERVICENAME 等同于SIGHUP 2) SIGINT: 中止正在運行的進程;相當于Ctrl+c 9) SIGKILL: 殺死正在運行的進程 不管進程處于何種操作,強行中斷并殺死。 15) SIGTERM:終止正在運行的進程(默認選項),通常是個后臺進程。 等待進程自己結束必要操作后,殺死進程。 18) SIGCONT: 繼續 有些程序放到后臺還是會自己運行的例如cp(不是停止狀態)。 19) SIGSTOP: 停止,打開vim后 ctrl + z將vim送到后臺。 該進程就處于停止狀態。 打開vim后 ctrl + z將vim送到后臺。 該進程就處于停止狀態 fg 將其送回前臺繼續運行。 指定信號的方法: (1) 信號的數字標識;1, 2, 9 (2) 信號完整名稱;SIGHUP (3) 信號的簡寫名稱;HUP 按PID:kill [-SIGNAL] pid… 按名稱:kill all[-SIGNAL] comm… killall httpd 按模式:pkill[options] pattern -SIGNAL -u uid: effective user,生效者 -U uid: real user,真正發起運行命令者 -t terminal: 與指定終端相關的進程 -l: 顯示進程名 -a: 顯示完整格式的進程名 -P pid: 顯示父進程為此處指定的進程的進程列表
原創文章,作者:yyw,如若轉載,請注明出處:http://www.www58058.com/44962