天天看點

linux基礎--程序管理

檢視程序狀态

ps:Process State

    支援兩種風格

        sysV風格:-

        BSD風格:

    a:所有與終端有關的程序

    u:以使用者為主的程序狀态

    x:所有與終端無關的程序

<code>[root@localhost ~]</code><code># ps aux    #BSD風格</code>

<code>USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND</code>

<code>root      8228  0.0  0.3 251964  5932 ?        Sl    2016   3:39 </code><code>/sbin/rsyslogd</code> <code>-i </code><code>/var/run/syslogd</code><code>.pid -c 5</code>

<code>root      8315  0.0  0.0  93132   884 ?        S&lt;sl  2016   4:03 auditd</code>

<code>root      8389  0.0  0.0  21108   492 ?        Ss    2016   0:00 </code><code>/usr/sbin/atd</code>

<code>rpc       8507  0.0  0.0  18980   916 ?        Ss    2016   0:04 rpcbind -w</code>

<code>root      8562  0.0  0.1 188972  3364 ?        Ss    2016   0:00 cupsd -C </code><code>/etc/cups/cupsd</code><code>.conf</code>

<code>root      8820  0.0  0.1 182888  2392 ?        Ss    2016   0:00 </code><code>/usr/sbin/abrtd</code>

<code>root      8840  0.0  0.1 180740  3028 ?        Ss    2016   0:00 abrt-dump-oops -d </code><code>/var/spool/abrt</code> <code>-rwx </code><code>/var/log/messages</code>

<code>rpcuser  19518  0.0  0.0  23352  1388 ?        Ss    2016   0:00 rpc.statd</code>

<code>root     20127  0.0  0.0  11228  1512 ?        S&lt;    2016   0:00 </code><code>/sbin/udevd</code> <code>-d</code>

<code>root     20128  0.0  0.0  11092  1116 ?        S&lt;    2016   0:00 </code><code>/sbin/udevd</code> <code>-d</code>

USER    使用者名

UID    使用者ID(User ID)

PID    程序ID(Process ID)

PPID    父程序的程序ID(Parent Process id)

SID    會話ID(Session id)

%CPU    程序的cpu占用率

%MEM    程序的記憶體占用率

VSZ    程序所使用的虛存的大小(Virtual Size)

RSS    程序使用的駐留集大小或者是實際記憶體的大小,Kbytes位元組。

TTY    與程序關聯的終端(tty)

STAT    程序的狀态:程序狀态使用字元表示的(STAT的狀态碼)

TIME   運作時間(占用cpu時長)

COMMAND   發起的指令,帶[]的程序表示為核心線程

ps程序狀态:

    D:不可中斷的睡眠

    R:運作或就緒

    S:可中斷的睡眠

    T:停止

    Z:僵死

    &lt;:高優先級程序

    N:低優先級程序

    +:前台程序組中的程序

    l:多線程程序

    s:會話程序的父程序

<code>[root@localhost ~]</code><code># ps -elf     #sysV風格</code>

<code>F S UID        PID  PPID  C PRI  NI ADDR SZ WCHAN  STIME TTY          TIME CMD</code>

<code>5 S root      8228     1  0  80   0 - 62991 poll_s  2016 ?        00:03:39 </code><code>/sbin/rsyslogd</code> <code>-i </code><code>/var/run/syslogd</code><code>.pid -c 5</code>

<code>5 S root      8315     1  0  76  -4 - 23283 ep_pol  2016 ?        00:04:03 auditd</code>

<code>5 S root      8389     1  0  80   0 -  5277 hrtime  2016 ?        00:00:00 </code><code>/usr/sbin/atd</code>

<code>5 S rpc       8507     1  0  80   0 -  4745 poll_s  2016 ?        00:00:04 rpcbind -w</code>

<code>4 S root      8562     1  0  80   0 - 47243 ep_pol  2016 ?        00:00:00 cupsd -C </code><code>/etc/cups/cupsd</code><code>.conf</code>

<code>1 S root      8820     1  0  80   0 - 45722 poll_s  2016 ?        00:00:00 </code><code>/usr/sbin/abrtd</code>

<code>0 S root      8840     1  0  80   0 - 45185 inotif  2016 ?        00:00:00 abrt-dump-oops -d </code><code>/var/spool/abrt</code> <code>-rwx </code><code>/var/log/messages</code>

<code>5 S rpcuser  19518     1  0  80   0 -  5838 poll_s  2016 ?        00:00:00 rpc.statd</code>

<code>5 S root     20127  4992  0  78  -2 -  2807 poll_s  2016 ?        00:00:00 </code><code>/sbin/udevd</code> <code>-d</code>

<code>5 S root     20128  4992  0  78  -2 -  2773 poll_s  2016 ?        00:00:00 </code><code>/sbin/udevd</code> <code>-d</code>

pgrep:

pgrep指令以名稱為依據從運作程序隊列中查找程序,并顯示查找到的程序id。每一個程序ID以一個十進制數表示。常用于腳本擷取id号

-o:僅顯示找到的最小(起始)程序号; 

-n:僅顯示找到的最大(結束)程序号; 

-l:顯示程序名稱; -P:指定父程序号; 

-g:指定程序組; 

-t:指定開啟程序的終端; 

-u:指定程序的有效使用者ID。

pidof:根據程序名稱,查找相關id的pid号

top:動态查詢主機性能

<code>[root@localhost ~]</code><code># top</code>

<code>top</code> <code>- 19:28:41 up 26 days,  7:04,  1 user,  load average: 0.07, 0.02, 0.00</code>

<code>Tasks:  94 total,   1 running,  93 sleeping,   0 stopped,   0 zombie</code>

<code>Cpu(s):  0.0%us,  0.0%sy,  0.0%ni,100.0%</code><code>id</code><code>,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st</code>

<code>Mem:   1914492k total,  1890628k used,    23864k </code><code>free</code><code>,   182376k buffers</code>

<code>Swap:  1048568k total,      156k used,  1048412k </code><code>free</code><code>,  1460496k cached</code>

<code>  </code><code>PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                                                                                             </code>

<code> </code><code>2507 root      20   0 98.4m 3868 2928 S  0.3  0.2   0:00.02 sshd                                                                                                                                                 </code>

<code> </code><code>2509 root      20   0 15032 1220  940 R  0.3  0.1   0:00.01 </code><code>top</code>                                                                                                                                                  

<code>    </code><code>1 root      20   0 19348 1440 1200 S  0.0  0.1   0:34.45 init                                                                                                                                                 </code>

<code>    </code><code>2 root      20   0     0    0    0 S  0.0  0.0   0:00.00 kthreadd                                                                                                                                             </code>

<code>    </code><code>3 root      RT   0     0    0    0 S  0.0  0.0   0:00.50 migration</code><code>/0</code>                                                                                                                                          

<code>    </code><code>4 root      20   0     0    0    0 S  0.0  0.0   0:00.97 ksoftirqd</code><code>/0</code>

<code>top</code> <code>- 19:28:41 :目前時間</code>

<code>up 26 days,  7:04:表示主機運作時長為26天7小時4分</code>

<code>1 user:登入使用者數</code>

<code>load average: 0.07, 0.02, 0.00:平均1分鐘、5分鐘、15分鐘的隊列長度平均值,越小表示cpu負載越低</code>

<code>Tasks:  94 total:程序總數</code>

<code>1 running: 1個處于運作的,根據cpu核數</code>

<code>93 sleeping:93個睡眠狀态的</code>

<code>0 stopped,   0 zombie:0個停止的程序,0個僵死程序</code>

<code>Cpu(s):cpu負載情況,按1鍵展示所有cpu負載</code>

<code>0.0%us:使用者空間的使用者程序占用的百分比</code>

<code>0.0%sy:核心空間的使用者程序占用的百分比</code>

<code>0.0%ni:調整</code><code>nice</code><code>值後影響的百分比</code>

<code>100.0%</code><code>id</code><code>:空閑的cpu百分比</code>

<code>0.0%wa:等待io占用的百分比</code>

<code>0.0%hi:硬體中斷占用的</code>

<code>0.0%si:軟中斷占用的</code>

<code>0.0%st:被偷走的cpu</code>

<code>Mem:記憶體使用資訊</code>

<code>total:總記憶體數</code>

<code>used:以使用記憶體</code>

<code>free</code><code>:空閑記憶體</code>

<code>buffers:buffers數</code>

<code>Swap:交換空間使用情況。和Mem行一緻</code>

<code>PID:程序pid</code>

<code>USER:運作使用者</code>

<code>PR:程序優先級,RT表示實時優先級</code>

<code>NI:</code><code>nice</code><code>值</code>

<code>VIRT:虛拟記憶體集</code>

<code>RES:常駐記憶體集</code>

<code>SHR:共享記憶體集</code>

<code>S:狀态</code>

<code>%CPU:占用cpu百分比</code>

<code>%Mem:占用記憶體百分比</code>

<code>TIME:程序在cpu運作時長</code>

<code>COMMAND:程序指令</code>

top常用的互動指令,在top指令界面敲下面的指令

    M:根據駐留記憶體大小進行排序

    P:根據CPU使用百分比排序

    T:根據累計時間進行排序

    l:是否顯示平均負載和啟動時間,即top第一行

    t:是否顯示程序的cpu狀态相關資訊,即top第二行

    m:是否顯示記憶體相關資訊,即top第三行

    c:是否顯示完整的指令行資訊

    q:退出top

    k:終止某個程序

    -d:指定延遲時長

    -b:整屏模式

    -n #:共顯示多少屏

程序間通信方式(IPC:inter process communication)

    共享記憶體

    信号:signal    

    samaphore

kill:終止程序運作

    -l:檢視所有kill信号

        1、SINGHUP:讓程序不需重新開機,就可重讀配置檔案,讓新配置檔案生效

        2、SIGINT:終斷一個前台程序

        9、SIGKILL:殺死一個程序

        15、SIGTERM:終止一個程序,在關閉打開檔案後終止程序,預設信号,即kill 程序号

<code>[root@localhost ~]</code><code># kill -l</code>

<code> </code><code>1) SIGHUP     2) SIGINT     3) SIGQUIT    4) SIGILL     5) SIGTRAP</code>

<code> </code><code>6) SIGABRT    7) SIGBUS     8) SIGFPE     9) SIGKILL   10) SIGUSR1</code>

<code>11) SIGSEGV    12) SIGUSR2    13) SIGPIPE    14) SIGALRM    15) SIGTERM</code>

<code>16) SIGSTKFLT  17) SIGCHLD    18) SIGCONT    19) SIGSTOP    20) SIGTSTP</code>

<code>21) SIGTTIN    22) SIGTTOU    23) SIGURG 24) SIGXCPU    25) SIGXFSZ</code>

<code>26) SIGVTALRM  27) SIGPROF    28) SIGWINCH   29) SIGIO  30) SIGPWR</code>

<code>31) SIGSYS 34) SIGRTMIN   35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3</code>

<code>38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8</code>

<code>43) SIGRTMIN+9 44) SIGRTMIN+10    45) SIGRTMIN+11    46) SIGRTMIN+12    47) SIGRTMIN+13</code>

<code>48) SIGRTMIN+14    49) SIGRTMIN+15    50) SIGRTMAX-14    51) SIGRTMAX-13    52) SIGRTMAX-12</code>

<code>53) SIGRTMAX-11    54) SIGRTMAX-10    55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7</code>

<code>58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2</code>

<code>63) SIGRTMAX-1 64) SIGRTMAX  </code>

kill PID

killall COMMAND 

前台程序:占據指令提示符

背景作業:啟動之後釋放指令提示符,操作在背景完成

前台--&gt;背景

    Ctrl+z:把正在前天的作業送往背景,預設進入背景為Stopped狀态

    COMMAND &amp;:讓指令在背景執行

bg:讓背景的停止作業繼續運作.

    bg JOBID:使用方法

fg:讓背景的作業調回到前台運作

    fg JOBID:使用方法

kill %JOBID:終止某作業

jobs:檢視背景所有作業,作業号不同于程序号。

    +:指令将預設操作的作業

    -:指令将第二個預設操作的作業

vmstat:系統狀态檢視指令

    vmstat 1:每隔1秒鐘顯示一次

    vmstat 1 5:每隔1秒鐘顯示一次,但隻顯示一次

<code>[root@localhost ~]</code><code># vmstat </code>

<code>procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----</code>

<code> </code><code>r  b   swpd   </code><code>free</code>   <code>buff  cache   si   so    bi    bo   </code><code>in</code>   <code>cs us sy </code><code>id</code> <code>wa st</code>

<code> </code><code>0  0    156  24756 182376 1461016    0    0     0     4    6    2  0  0 99  0  0</code>

procs:程序相關

    r:運作隊列長度

    b:阻塞隊列長度

memory:記憶體相關資訊

    swpd:交換大小

    free:空閑大小

    buff:緩沖區大小

    cache:緩存區大小

swap:在vmstat運作期間交換空間相關

    si:實體記憶體到swap空間交換的頁面

    so:swap空間到實體記憶體交換的頁面

    bi:磁盤塊調入到實體記憶體中

    bo:實體記憶體調入到磁盤塊中

system

    in:中斷的個數

    cs:vmstat運作周期上下文切換的次數

cpu

    us:使用者空間占用的百分比

    sy:核心空間占用的百分比

    id:空閑百分比

    wa:等待io占用百分比

uptime:檢視系統登入時間和系統負載

本文轉自  亮公子  51CTO部落格,原文連結:http://blog.51cto.com/iyull/1890213

繼續閱讀