进程管理负责管理和控制所有的动态过程和资源;文件系统负责管理所有的静态信息和资源。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 僵尸进程; 附加标志位: |
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 一般可以保证终止进程。