概述:php
本篇是上篇進程及做業管理(一)http://1992tao.blog.51cto.com/11606804/1851196的後續內容,將繼續介紹進程相關的管理工具!html
=============================================================================linux
1.uptime命令;ios
★uptime命令:apache
顯示當前時間,系統已啓動的時間、當前上線人數,系統平均負載(一、五、10分鐘的平均負載,通常不會超過1);centos
系統平均負載:指在特定時間間隔內運行隊列中的平均進程數;安全
若是每一個CPU內核的當前活動進程數不大於3的話,那麼系統的性能良好。若是每一個CPU內核的任務數大於5,那麼這臺機器的性能有嚴重問題;bash
若是linux主機是1個雙核CPU的話,當Load Average 爲6的時候說明機器已經被充分使用了。
服務器
演示:網絡
[root@centos7 ~]# uptime 22:22:11 up 13:54, 2 users, load average: 0.00, 0.01, 0.05
2.top命令;
★top命令:- display Linux processes
相對於ps而言,ps顯示的是某個時間點的進程狀態信息,然而在實際的運用當中,咱們可能須要動態的持續監控進程的運行狀態,top命令就能夠實現這一功能。
★命令及選項:
☉排序命令:
P:以佔據cpu百分比排序;
M:以佔據內存百分比排序;
T:累計佔用cpu時間排序
☉首部信息命令:
uptime信息:l 命令 是否顯示;
tasks及cpu:t 命令 是否顯示;
內存信息: m 命令 是否顯示;
☉相關操做命令:
退出命令: q
刷新時間間隔:s
終止指定進程:k
☉選項:
-d #:指定刷新時間間隔,默認爲3妙;
-n #:以批次方式顯示,顯示多少批次;
-b :batch,以批次顯示;
★每一行表明的含義以下:
☉第一行:uptime 信息
系統當前的時間,即:22:29:39
系統啓動到如今所通過的時間,即:up 14:02
當前已登陸系統的用戶數,即:2 users
系統在1,5,15分鐘的平均負載,值越小表示系統越空閒,若是高於1,就須要注意當前系統負載太高。
☉第二行:
顯示的是目前進程的總量與個別程序在什麼狀態(running,sleeping,stopped,zombie),須要注意的是最後的zmobie值,若是不是0就要查看下哪一個進程處於僵死狀態;
☉第三行:
顯示的是cpu的總體負載,若是說是多核心的cpu,能夠按下數字1來切換成不一樣cpu的負載率;
us:user space用戶運行程序佔用CPU的百分比;
sy:system (kernel space)用於運行內核佔用CPU百分比;
ni:nice用戶進程空間所改變優先級的進程佔用CPU的百分比;
id:idle空閒CPU百分比;
wa:wait io 等待I/O花費時間;
hi:hardware interrupt 硬件中斷佔用CPU百分比;
si:software interrupt 軟件中斷佔用CPU百分比;
st:stolen,被虛擬機「偷走」的百分比;
☉第四行:
表示物理內存的使用狀況;
☉第五行:
表示交換分區的使用狀況;
☉第六行:
這裏默認是空白顯示,當在top程序當中輸入命令時,顯示狀態的地方,這裏能夠輸入的命令有:
P:以佔據CPU百分比大小排序;
M:以佔據Memory空間大小排序;
T:CPU累計佔用時間排序;
l:是否顯示系統負載行;
t:是否顯示進程摘要信息及CPU負載狀態;
1:這裏是數字1,平均或單獨顯示CPU的負載狀態;
m:是否顯示內存相關的狀態信息;
q:退出命令;
s:修改延遲時長;
k:終止指定進程;
★top命令行表明含義:
PID:每一個進程ID;
USER:進程所屬的使用者;
PR:Priority的簡寫,進程的優先級,越小優先級越高;
NI:Nice的簡寫,與Priority有關,也是越小越早被運行;
VIRT:進程須要的虛擬內存大小,而非使用的虛擬內存大小;
RES:進程當前使用的內存大小,不包括swap;
SHR:進程與其餘進程共享的內存大小,可經過RES-SHR來計算進程所佔用的物理內存;
S: 進程狀態;
%CPU:CPU的使用率;
%MEM:物理內存是使用率;
TIME+:CPU使用時間的累加
3.htop命令;
★htop命令:
除了top命令外,還有一個top的加強版命令htop,系統默認狀況下沒有安裝,須要epel源來進行安裝;(在工做中epel源,直接指定阿里雲,網易或者搜狐的鏡像網站便可)
☉選項:
-d #:指定延遲時間;
-u UserName:僅顯示指定用戶的進程;
-s COLUME:以指定字段進行排序;
☉htop界面所支持的一些交互式命令:
s:跟蹤選定進程的系統調用;
l:顯示選定進程打開的文件列表;
a:將選定的進程綁定至某指定CPU核心;
t:顯示進程樹
注:
詳細使用方法參考:
演示:
[epel] name=Fedora-epel/7/x86_64 baseurl=http://10.1.0.1/fedora-epel/$releasever/$basearch/ # 使用的是變量 6和7都適用 gpgcheck=0
安裝好以後,直接經過 # yum install htop 命令進行安裝,安裝後執行htop命令便可,
以下:
幫助以下:
★做用:
動態顯示系統資源的使用狀況,這些資源包括:內存、磁盤、網絡、cpu等資源
1.vmstat命令;
★vmstat命令:虛擬內存信息
☉用法:
vmstat[options] [delay [count]]
☉每一行所表明的含義:
☉選項:
-s:顯示內存統計數據
演示:
[root@centos7 ~]# vmstat procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 2 0 0 458712 1372 295840 0 0 4 0 29 24 0 0 99 0 0 # 每兩秒中顯示一次,共顯示3次 [root@centos7 ~]# vmstat 2 3 procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 2 0 0 458664 1372 295840 0 0 4 0 29 24 0 0 99 0 0 0 0 0 458664 1372 295840 0 0 0 0 21 21 0 0 100 0 0 0 0 0 458664 1372 295840 0 0 0 0 21 13 0 0 100 0 0
# 顯示內存統計數據信息 [root@CentOS6 ~]# vmstat -s 1004136 total memory 367776 used memory 171720 active memory 89104 inactive memory 636360 free memory 48268 buffer memory 194220 swap cache 2097148 total swap 0 used swap 2097148 free swap 1290 non-nice user cpu ticks 50 nice user cpu ticks 4044 system cpu ticks 1415750 idle cpu ticks 4467 IO-wait cpu ticks 10 IRQ cpu ticks 854 softirq cpu ticks 0 stolen cpu ticks 244210 pages paged in 47602 pages paged out 0 pages swapped in 0 pages swapped out 236639 interrupts 233074 CPU context switches 1488242549 boot time 3436 forks
2.pmap命令;
★pmap命令 報告進程的內存映射
☉用法:
pmap [options] pid[...]
-x:顯示詳細格式的信息;
演示:
[root@centos7 ~]# pmap 1 1: /usr/lib/systemd/systemd --switched-root --system --deserialize 21 00007ff0a5d59000 16K r-x-- libuuid.so.1.3.0 00007ff0a5d5d000 2044K ----- libuuid.so.1.3.0 00007ff0a5f5c000 4K r---- libuuid.so.1.3.0 00007ff0a5f5d000 4K rw--- libuuid.so.1.3.0 00007ff0a5f5e000 224K r-x-- libblkid.so.1.1.0 00007ff0a5f96000 2048K ----- libblkid.so.1.1.0 00007ff0a6196000 12K r---- libblkid.so.1.1.0 00007ff0a6199000 4K rw--- libblkid.so.1.1.0
另一種實現方式:# cat /proc/PID/maps 以下:
[root@centos7 ~]# cat /proc/1/maps 7ff0a5d59000-7ff0a5d5d000 r-xp 00000000 08:03 33782768 /usr/lib64/libuuid.so.1.3.0 7ff0a5d5d000-7ff0a5f5c000 ---p 00004000 08:03 33782768 /usr/lib64/libuuid.so.1.3.0 7ff0a5f5c000-7ff0a5f5d000 r--p 00003000 08:03 33782768 /usr/lib64/libuuid.so.1.3.0 7ff0a5f5d000-7ff0a5f5e000 rw-p 00004000 08:03 33782768 /usr/lib64/libuuid.so.1.3.0 7ff0a5f5e000-7ff0a5f96000 r-xp 00000000 08:03 34593175 /usr/li
1.glances命令;
★介紹:
glances是一款用於Linux、BSD的開源命令行系統監控工具。可以監視CPU、負載、內存、磁盤I/O、網絡流量、文件系統、系統溫度等信息。
☉選項:
-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:要連入的服務器端地址
演示:
2.dstat命令;
★dsate命令:系統監控工具(很重要)
dstat是一個能夠取代vmstat、iostat、netstat和ifstat這些命令的多功能產品。dastat能夠很方便的監控系統運行情況並用於基準測試和排除故障。
☉用法:
dstat [-afv] [options..] [delay [count]]
☉選項:
使用參考
演示:
以上都是一些進程的查看、進程資源的獲取等命令,接下來是進程的管理,所謂進程的管理就是向進程發送一些控制信號,來完成對進程的管理控制。
1.kill命令;
★做用:
顯示當前系統的信號,以及向進程發送信號指令,以實現對進程的管理。
☉用法1:
kill -l [signal] (顯示當前系統可用信號(或者使用man 7 signal))
☉每一個信號有三種表示方式:
信號的數字標識;如 1
信號的完整名稱;如 SIGHUB
信號的簡寫名稱;如 HUB
☉用法2:
kill [-s signal|-SINGAL] pid... :向進程發送信號
☉經常使用的信號:
SIGHUP,1:無須從新啓動進程而讓其重讀配置文件,並生效;
SIGINT,2:打斷正在運行的進程;至關於Ctrl+c;
SIGKILL,9:強行終止(殺死)正在運行的進程;
SIGTERM,15:安全終止正在運行的進程;
SIGCONT,18:繼續運行指定的進程;
SIGSTOP,19:暫停進程;
演示:
[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 21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ 26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR 31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3 38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8 43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13 48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12 53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7 58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2 63) SIGRTMAX-1 64) SIGRTMAX [root@centos7 ~]# kill -l 1 HUP
2.向進程發送信號:
[root@CentOS6 ~]# ps aux |grep httpd root 7654 0.0 0.3 186052 3920 ? Ss 06:02 0:00 /usr/sbin/httpd apache 7658 0.0 0.2 186052 2516 ? S 06:02 0:00 /usr/sbin/httpd apache 7659 0.0 0.2 186052 2500 ? S 06:02 0:00 /usr/sbin/httpd apache 7660 0.0 0.2 186052 2500 ? S 06:02 0:00 /usr/sbin/httpd apache 7661 0.0 0.2 186052 2500 ? S 06:02 0:00 /usr/sbin/httpd apache 7662 0.0 0.2 186052 2500 ? S 06:02 0:00 /usr/sbin/httpd apache 7663 0.0 0.2 186052 2500 ? S 06:02 0:00 /usr/sbin/httpd apache 7664 0.0 0.2 186052 2500 ? S 06:02 0:00 /usr/sbin/httpd root 7697 0.0 0.0 103316 844 pts/0 S+ 06:06 0:00 grep --color=auto httpd # 發送信號 [root@CentOS6 ~]# kill -s 15 7660 [root@CentOS6 ~]# ps aux |grep httpd root 7654 0.0 0.3 186052 3920 ? Ss 06:02 0:00 /usr/sbin/httpd apache 7658 0.0 0.2 186052 2516 ? S 06:02 0:00 /usr/sbin/httpd apache 7659 0.0 0.2 186052 2500 ? S 06:02 0:00 /usr/sbin/httpd apache 7661 0.0 0.2 186052 2500 ? S 06:02 0:00 /usr/sbin/httpd apache 7662 0.0 0.2 186052 2500 ? S 06:02 0:00 /usr/sbin/httpd apache 7663 0.0 0.2 186052 2500 ? S 06:02 0:00 /usr/sbin/httpd apache 7664 0.0 0.2 186052 2500 ? S 06:02 0:00 /usr/sbin/httpd root 7700 0.0 0.0 103316 848 pts/0 S+ 06:06 0:00 grep --color=auto httpd
1.killall命令;
★做用:
殺死指定進程的全部進程
☉用法:
killall [-SIGNAL] program
演示:
[root@CentOS6 ~]# killall httpd [root@CentOS6 ~]# ps aux |grep httpd root 7759 0.0 0.0 103316 848 pts/0 S+ 06:30 0:00 grep --color=auto httpd
1.Linux做業控制;
★job
☉前臺做業(foreground):
經過終端啓動,且啓動後一直佔據終端;
☉後臺做業(background):
可經過終端啓動,但啓動後即轉入後臺運行(釋放終端)
★如何讓做業運行於後臺?
☉運行中的做業:
Ctrl+z
注意:
送日後臺後,做業會轉爲中止態;
☉還沒有啓動的做業:
~]# COMMAND &
注意:
此類做業雖然被送日後臺運行,但其依然與終端相關;退出終端,將關閉後臺做業。 若是但願送日後臺後,剝離與終端的關係:
~]# nohup COMMAND &
★查看全部做業:
~]# jobs
★做業控制
# fg [[%]JOB_NUM]:把指定的後臺做業(做業號)調回前臺;
# bg [[%]JOB_NUM]:讓送日後臺的做業在後臺繼續運行;
# kill [%JOB_NUM]:終止指定的做業;(百分號和做業號是不能夠省略的)
演示:
# 運行中的進程按 Ctrl+z 送日後臺 [root@CentOS6 ~]# ping www.baidu.com PING www.a.shifen.com (61.135.169.125) 56(84) bytes of data. 64 bytes from 61.135.169.125: icmp_seq=1 ttl=56 time=3.73 ms 64 bytes from 61.135.169.125: icmp_seq=2 ttl=56 time=4.46 ms 64 bytes from 61.135.169.125: icmp_seq=3 ttl=56 time=5.96 ms ^Z [1]+ Stopped ping www.baidu.com [root@CentOS6 ~]# htop [2]+ Stopped htop # 查看後臺做業,其中帶加號的優先級最高,「-」其次 [root@CentOS6 ~]# jobs [1]- Stopped ping www.baidu.com [2]+ Stopped htop # fg 調回前臺,不指明做業號,默認調回有 + 的做業 [root@CentOS6 ~]# fg ping www.baidu.com 64 bytes from 61.135.169.121: icmp_seq=5 ttl=56 time=3.84 ms 64 bytes from 61.135.169.121: icmp_seq=6 ttl=56 time=4.23 ms [root@CentOS6 ~]# kill %1 [1]- Stopped ping 10.1.252.161 [root@CentOS6 ~]# jobs [1]- Terminated # 已終止 ping 10.1.252.161 [2]+ Stopped htop [root@CentOS6 ~]# jobs [2]+ Stopped htop
2.進程優先級及調整進程nice值的方法;
★進程優先級
可經過nice值調整的優先級範圍:100-139;
nice值分別對應於:-20,19;
進程啓動時默認的nice值爲0,優先級爲120;
只有根用戶才能下降nice值(提升優先性);
★調整進程nice值的方法:
☉對於還沒有啓動的進程 (僅管理員可調低nice值)
# nice -n N COMMAND :N表示nice值,範圍 -20~19;
☉對於已經啓動並處於運行中進程的nice值
# renice [-n] N PID
☉查看nice值和優先級
# ps axo pid,comm,ni,priority
演示:
[root@CentOS6 ~]# nice -n -5 htop [root@CentOS6 ~]# ps axo pid,comm,ni,priority |grep htop 8275 htop -5 15 [root@CentOS6 ~]# renice -n -3 8275 8275: old priority -5, new priority -3 [root@CentOS6 ~]# ps axo pid,comm,ni,priority |grep htop 8275 htop -3 17