Linux的进程管理
Linux进程的相关概念
进程的类型
1. 前台进程
具有终端,可以和用户交互的进程
2. 后台进程
与前台进程相对,没有占用终端的进程;
后台程序基本上不和用户交互,优先级比前台进程要低
将需要执行的进程在后面使用“&”符号
3. 守护进程(特殊的后台进程)
很多守护进程在系统引导的时候启动,一直运行到系统关闭
Linux有很多典型的守护进程:进程名以“d”结尾的一般都是守护进程
- crond定时任务的守护进程
- httpd是Linux里http服务的守护进程
- sshd平时使用ssh登陆的守护进程
- mysqld数据库的守护进程
进程的标记
1. 进程ID
指的是进程控制块里的唯一标识符
进程ID表现为一个非负整数,最大值由操作系统限定,即操作系统所限定的最多拥有进程数的数量。top命令查看
图中的PID就是进程的唯一ID
操作系统提供fork()函数接口创建进程,一个进程可以有fork函数被创建出来,可能会出现进程A调用被fork函数创建出来的进程B,进程B调用被fork函数创建的进程C。他们的这种层级关系称之为父子进程关系。
图片来源:慕课网实战课程《编程必备基础》
进程的父子关系可以通过pstree命令查看
几个特殊进程:
ID为0的进程是idle进程,使系统创建的第一个进程
ID为1的进程是init进程,是0进程的子进程,完成系统初始化;init进程是所有用户进程的祖先进程,即用户所有的进程都是通过init进程创建出来的
进程的标记状态
图片来源:慕课网实战课程《编程必备基础》
上图是进程的五状态模型,Linux里进程同样有这样的状态机,可以通过man ps 命令来了解Linux里各进程状态的标记。
状态符号 | 状态说明 |
---|---|
R | (TASK_RUNNING),进程正处于运行状态 |
S | (TASK_INTERRUPTIBLE),进程正处于睡眠状态 |
D | (TASK_UNINTERRUPTIBLE),进程正处于IO等待的睡眠状态 |
T | (TASK_STOPPED),进程正处于暂停状态 |
Z | (TASK_DEAD or EXIT_ZOMBIE),进程正处于退出状态,或僵尸进程 |
操作Linux进程的相关命令
ps命令
主要查看进程,常用于显示当前进程状态
ps命令常配合aux参数和ef参数和grep命令检索特定的进程ps -aux
打印进程的详细信息ps -u root
查看指定root用户的进程ps -aux | grep ' '
查询特定的进程ps -ef --forest
查看进程数ps -aux --sort=-pcpu
表示按照cpu的使用频率进行排序ps -aux --sort=-pmem
按照内存使用频率进行排序
top命令
看Linux进程的使用内存或者是一些别的状态的命令
PID 进程的ID
USER 进程的用户
PR 进程的优先级
VIRT 进程的虚拟内存
%CPU 进程所使用的CPU
%MEM 进程所使用的内存
TIME+ 进程运行的时间
COMMAND 进程的命令
kill命令
通过kill命令给进程发送指定的信号kill - 9 进程ID
发送9信号给ID,把运行的进程kill掉;9指的是进程无条件停止kill -l
可以查看操作系统支持的信号
只有(SIGKILL 9)信号可以无条件终止进程,其他信号进程有权忽略