天天看点

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

继续阅读