Linux---进程管理

进程管理负责管理和控制所有的动态过程和资源;文件系统负责管理所有的静态信息和资源。Linux进程分为两大类:系统进程和用户进程

1. 进程的属性

Linux内核中一些重要的进程信息包括:

  • 进程的内存地址
  • 进程当前的状态
  • 进程正在使用的资源
  • 进程的优先级
  • 进程的属主

进程的几个常用参数:

  • PID: 进程号
  • PPID:父进程PID
  • UID:真实用户ID (进程创建者的用户ID号)
  • GID:真实组ID(进程创建者所属组的ID号)
  • 谦让度和优先级:优先级高的进程更早被处理。谦让度和优先级是一对相反的概念,高谦让度意味着低优先级,允许用户设置谦让度

2. 监视进程 ps

 ps aux 用于显示当前系统上运行的所有进程的信息

wangzhengchao@ubuntu:~$ ps aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.1 185428  4836 ?        Ss   08:42   0:01 /sbin/init splash
root         2  0.0  0.0      0     0 ?        S    08:42   0:00 [kthreadd]
root         4  0.0  0.0      0     0 ?        I<   08:42   0:00 [kworker/0:0H]
root         6  0.0  0.0      0     0 ?        I<   08:42   0:00 [mm_percpu_wq]
root         7  0.0  0.0      0     0 ?        S    08:42   0:00 [ksoftirqd/0]
...
guest-p+ 31092  0.0  0.1 448660  7840 ?        Sl   12:56   0:02 /usr/lib/x86_64-linux-gnu/deja-dup/deja-dup
wangzhe+ 31178  0.0  0.9 1624952 38048 ?       Sl   13:01   0:00 /usr/lib/firefox/firefox -contentproc -chil
root     31357  0.0  0.0      0     0 ?        I    13:06   0:00 [kworker/3:1]
wangzhe+ 31422  0.1  0.8 638968 31984 ?        Sl   13:08   0:08 /usr/lib/gnome-terminal/gnome-terminal-serv
wangzhe+ 31428  0.0  0.1  29748  5120 pts/22   Ss   13:08   0:00 bash

各字段含义:

USER 进程创建者的用户名
PID  
进程的ID
%CPU  
进程占用的CPU百分比
%MEM 
占用内存的百分比
VSZ    
该进程使用的虚拟内存量(KB)
RSS    
内存中页的数量
TTY    
进程所在终端的ID号
START  
该进程的启动时间
TIME     
该进程实际使用CPU的时间
COMMAND 
命令的名称和参数
STAT 状态位:
D 休眠状态(不可唤醒)
R 正在运行中
S 休眠状态(可唤醒)
T 停止或被追踪;
Z 僵尸进程;

附加标志位:
< 优先级高的进程
N 优先级较低的进程
L 有些页被锁进内存
s 进程的领导者(在它之下有子进程

 ps lax 用可以提供父进程ID(PPID)以及谦让度(NI)

wangzhengchao@ubuntu:~$ ps lax
F   UID   PID  PPID PRI  NI    VSZ   RSS WCHAN  STAT TTY        TIME COMMAND
4     0     1     0  20   0 185428  4836 -      Ss   ?          0:01 /sbin/init splash
1     0     2     0  20   0      0     0 -      S    ?          0:00 [kthreadd]
1     0     4     2   0 -20      0     0 -      I<   ?          0:00 [kworker/0:0H]
...
5     0 31357     2  20   0      0     0 -      I    ?          0:00 [kworker/3:1]
0  1000 31422  1143  20   0 638968 31984 poll_s Sl   ?          0:09 /usr/lib/gnome-terminal/gnome-terminal-
0  1000 31428 31422  20   0  29748  5120 wait   Ss   pts/22     0:00 bash

3. 及时跟踪进程信息 top

 top 命令能够及时跟踪进程信息,并在默认情况下,每10s更新一次,使用CPU最多的程序会排在最前面,q退出监视。

wangzhengchao@ubuntu:~$ top

top - 14:49:37 up  6:06,  4 users,  load average: 0.28, 0.37, 0.49
Tasks: 424 total,   1 running, 369 sleeping,   0 stopped,   0 zombie
%Cpu(s):  1.0 us,  0.8 sy,  0.0 ni, 98.2 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  3939428 total,   266684 free,  2710988 used,   961756 buff/cache
KiB Swap:  3998716 total,  3320572 free,   678144 used.   421936 avail Mem 

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                 
 1006 root      20   0  417636  77624  58456 S   2.3  2.0   9:02.20 Xorg                                    
26117 wangzhe+  20   0 2072900 261272  97860 S   2.3  6.6   8:45.22 Web Content                             
 2406 wangzhe+  20   0 2714196 281312  89740 S   1.7  7.1  19:02.00 firefox                                 
31422 wangzhe+  20   0  638968  32092  21088 S   1.7  0.8   0:11.80 gnome-terminal-                         
    8 root      20   0       0      0      0 I   0.3  0.0   0:32.33 rcu_sched 

4. 查看占用文件的进程 lsof

 lsof filename  用于查看占用文件filename的进程,若省略filename则显示所有打开文件的进程

5. 向进程发出信号 kill

 kill [-signal] pid  表示向进程号为pid的进程发送signal信号

常用的信号:

信号编号 信号名 描述 执行操作(默认)
0 EXIT 程序退出时收到的信号 终止
1 HUP 挂起 终止
2 INT 中断 终止
3 QUIT 退出 终止
9 KILL 杀死 终止
11 SEGV 段错误 终止
15 TERM 软件终止 终止

注意:

  • 普通用户只能终止自己的进程,root用户可以终止任何进程。
  • kill 命令不一定能够终止一个进程。kill只是向进程发出信号,但是进程可以选择封锁或者忽略。但是使用指令 sudo kill -KILL pid 一般可以保证终止进程。

posted on 2018-11-05 15:42  wangzhch  阅读(276)  评论(0编辑  收藏  举报

导航