Linux 进程管理命令:

   ps

      process status 查看进行相关信息:

      system 风格:sysv  有-线引导

      BSD风格:BSD
 

  ps

      a:显示所有跟终端有关的进程

      u:显示更详细的字段

      x:显示所有跟终端无关的进程

  常用 ps ax

 

 

进程分类:

               终端启动(相关)的进程:用户通过命令行启动的进程

               跟终端无关的进程:系统启动就自己启动

 

进程状态:

   D: 表示不可中断的睡眠

   R:表示就绪态

   S:表示可中断的睡眠

   T:停止

   Z:僵死态

 

  <:高优先级进程

  N:低优先级进程

  +:前台进程

  l:多线程进程

  s:这是一个会话进程的首进程

ps  aux----------------BSD风格

 [root@john ~]# ps aux | head
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.1   2900  1432 ?        Ss   Jan18   0:03 /sbin/init
root         2  0.0  0.0      0     0 ?        S    Jan18   0:00 [kthreadd]
root         3  0.0  0.0      0     0 ?        S    Jan18   0:00 [migration/0]
root         4  0.0  0.0      0     0 ?        S    Jan18   0:00 [ksoftirqd/0]
root         5  0.0  0.0      0     0 ?        S    Jan18   0:00 [migration/0]
root         6  0.0  0.0      0     0 ?        S    Jan18   0:03 [watchdog/0]
root         7  0.0  0.0      0     0 ?        S    Jan18   0:04 [events/0]
root         8  0.0  0.0      0     0 ?        S    Jan18   0:00 [cgroup]
root         9  0.0  0.0      0     0 ?        S    Jan18   0:00 [khelper]

 

  %cpu----CPU使用率

  %MEM----内存使用率

  VSZ-------虚拟内存

  RSS----常驻内存

 TTY-----终端类型

 STAT-----进程转态

 

注意:COMMADN---下加了中括号的进程表示内核的进程

 

sys v 风格:

    ps:

         -e  显示所有进程

         -F | f 显示全面的信息

         -l   显示长格式

[root@john ~]# ps -e | head
  PID TTY          TIME CMD
    1 ?        00:00:03 init
    2 ?        00:00:00 kthreadd
    3 ?        00:00:00 migration/0
    4 ?        00:00:00 ksoftirqd/0
    5 ?        00:00:00 migration/0
    6 ?        00:00:03 watchdog/0
    7 ?        00:00:04 events/0
    8 ?        00:00:00 cgroup
    9 ?        00:00:00 khelper
[root@john ~]# ps -el | head
F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
4 S     0     1     0  0  80   0 -   725 -      ?        00:00:03 init
1 S     0     2     0  0  80   0 -     0 -      ?        00:00:00 kthreadd
1 S     0     3     2  0 -40   - -     0 -      ?        00:00:00 migration/0
1 S     0     4     2  0  80   0 -     0 -      ?        00:00:00 ksoftirqd/0
1 S     0     5     2  0 -40   - -     0 -      ?        00:00:00 migration/0
5 S     0     6     2  0 -40   - -     0 -      ?        00:00:03 watchdog/0
1 S     0     7     2  0  80   0 -     0 -      ?        00:00:04 events/0
1 S     0     8     2  0  80   0 -     0 -      ?        00:00:00 cgroup
1 S     0     9     2  0  80   0 -     0 -      ?        00:00:00 khelper
[root@john ~]#

常用:

PRI----优先级  (0-139,其中0-100为内核进程优先级,101-139为用户进程优先级)

 NI----nice值

 

ps -ef

     -eF

 

F S UID        PID  PPID  C PRI  NI ADDR SZ WCHAN    RSS PSR STIME TTY          TIME CMD
4 S root         1     0  0  80   0 -   725 -       1432   0 Jan18 ?        00:00:03 /sbin/init
1 S root         2     0  0  80   0 -     0 -          0   0 Jan18 ?        00:00:00 [kthreadd]
1 S root         3     2  0 -40   - -     0 -          0   0 Jan18 ?        00:00:00 [migration/0]
1 S root         4     2  0  80   0 -     0 -          0   0 Jan18 ?        00:00:00 [ksoftirqd/0]
1 S root         5     2  0 -40   - -     0 -          0   0 Jan18 ?        00:00:00 [migration/0]
5 S root         6     2  0 -40   - -     0 -          0   0 Jan18 ?        00:00:03 [watchdog/0]
1 S root         7     2  0  80   0 -     0 -          0   0 Jan18 ?        00:00:05 [events/0]
1 S root         8     2  0  80   0 -     0 -          0   0 Jan18 ?        00:00:00 [cgroup]
1 S root         9     2  0  80   0 -     0 -          0   0 Jan18 ?        00:00:00 [khelper]

PSR---正在运行在哪个CPU上

 

手动指定显示那些字段:

   -o

eg:ps -o pid,

       ps -axo pid,comm  显示所有进程的pid和comm

 

eg:查找grep命令:查找某个命令可以用grep命令

     ps aux | grep "grep"

 

其他命令:

pstree -----显示进程树

 

pgrep------以grep风格显示要找的进程,只显示进程号

          -u  以某个用户运行的进程

 

pidof------指定进程的名字,来找PID号

eg: pidof mysql

 

top:每隔5秒刷新一次:

      M:根据驻留内存大小进行排序

      P:根据CPU使用百分比进行排序

      T:根据累计时间进行排序

 

 

      l:是否显示平均负载和启动时间

      t:是否显示进程和CPU状态相关信息

      m:是否显示内存相关信息

 

      c:是否显示完整命令行的

      q:表示退出

      k:表示杀掉某个进程

     -d:修改刷新时长,单位是秒

     -b:批模式显示

     -n #:表示批处理模式只显示#屏

   

 

[root@john ~]# top
top - 13:30:08 up 18:09,  4 users,  load average: 0.00, 0.00, 0.00
Tasks:  91 total,   1 running,  90 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.0%us,  0.3%sy,  0.0%ni, 99.7%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   1030532k total,   267380k used,   763152k free,    53828k buffers
Swap:  2064376k total,        0k used,  2064376k free,   126108k cached
  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                
  329 root      20   0     0    0    0 S  0.7  0.0   0:12.41 jbd2/dm-0-8                                                            
 5510 root      20   0 12780 3392 2620 S  0.3  0.3   0:01.31 sshd                                                                   
 5649 root      20   0  2676 1088  880 R  0.3  0.1   0:00.10 top                                                                    
    1 root      20   0  2900 1432 1212 S  0.0  0.1   0:03.75 init                                                                   
    2 root      20   0     0    0    0 S  0.0  0.0   0:00.05 kthreadd

 

up:后的时间表示运行时长

 4 users 登录的用户

load average:平均负载 load average: 0.00(过去的1分钟之内的队列长度), 0.00(过去的5分钟之内队列长度),, 0.00(过去的15分钟之内队列长度

 

Tasks:  91 total,------进程数

 

Cpu(s):  0.0%us,  0.3%sy,  0.0%ni, 99.7%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st

 

CPU(s)----表示所有CPU的平均值,按1键可以显示每个CPU的情况

 

 0.0%us,  用户空间占据的百分比

 0.3%sy  系统空间占用的百分比(内核)

 0.0%ni, nice值调整的比例

99.7%id, 空闲率

0.0%wa  等待I/O完成的等待时间

 

VIRT  :虚拟内存集

RES :常驻内存集

SHR:共享内存

S:状态

 

 

 

 

进程间通信

    IPC  (共享内存、信号、semaphore)

 

 

kill  终止一个进程的命令

  kill -l 显示所有通信信号:

1 :SIGHUP--- 让一个进程不用重启动就可以重读其配置文件,并让配置信息生效

2 :SIGINT---  类似crtl+c,终止一个前台进程

9 : SIGKILL---杀死一个进程,直接强制杀死进程

15:SIGTERM------终止一个进程,可以先结束其他进程后在终止本进程。kill 默认就是15号信号

 

  kill -1 = kill -SIGHUP

也可以简写,也就是去掉SIG,编程kill -HUP

 

killall 后面加进程名,杀死进程名的所有进程,killall 也可以指定信号

eg:killall httpd

 

调整进程的nice值:(也就是调整进程的优先级)

   renice +nice值 +PID---已经启动的进程

eg:renice -3 31709

 

在启动时修改nice值

nice -n nice值 COMM

 

 

前台:占据了命令提示符的

后台:启动之后就释放命令提示符,后续的操作在后台完成

 

在命令后面加上&符号,执行命令后就释放前台,转到后台操作

 

 

前台---》后台  ctrl+z 将执行的命令送到后台,但是进程停止

命令后加&,让命令在后台执行

 

bg:让后台的停止作业继续运行

     bg 跟上作业号,作业号可以省略

 

jobs,查看后台的所有作业,每个作业都有一个作业号,+表示命令将默认操作的作业,-表示默认第二个操作的作业

 

fg:将后台的作业调回前台

 

 kill %jobid ---杀死某个作业

 

vmstat

    r:队列长度

    b阻塞队列长度

si:有多少swap内存信息被调入

so:有多少swap内存信息被调出

 

 

vmstat 1 每隔1秒钟更新一次

 

vmstat 1  5 每隔1秒钟更新一次,只显示5次

 

uptime :  登录时间、负载、运行时长

 

 

cat /proc/meminfo----查看内存信息

cat /proc/cpuinfo---查看 CPU 信息