Linux的进程管理

Linux进程的相关概念

进程的类型

1. 前台进程
具有终端,可以和用户交互的进程

2. 后台进程
与前台进程相对,没有占用终端的进程;
后台程序基本上不和用户交互,优先级比前台进程要低
将需要执行的进程在后面使用“&”符号

3. 守护进程(特殊的后台进程)
很多守护进程在系统引导的时候启动,一直运行到系统关闭
Linux有很多典型的守护进程:进程名以“d”结尾的一般都是守护进程

  • crond定时任务的守护进程
  • httpd是Linux里http服务的守护进程
  • sshd平时使用ssh登陆的守护进程
  • mysqld数据库的守护进程

进程的标记

1. 进程ID
指的是进程控制块里的唯一标识符
进程ID表现为一个非负整数,最大值由操作系统限定,即操作系统所限定的最多拥有进程数的数量。top命令查看
Linux的进程管理
图中的PID就是进程的唯一ID

操作系统提供fork()函数接口创建进程,一个进程可以有fork函数被创建出来,可能会出现进程A调用被fork函数创建出来的进程B,进程B调用被fork函数创建的进程C。他们的这种层级关系称之为父子进程关系。
Linux的进程管理
图片来源:慕课网实战课程《编程必备基础》
进程的父子关系可以通过pstree命令查看

几个特殊进程:
ID为0的进程是idle进程,使系统创建的第一个进程
ID为1的进程是init进程,是0进程的子进程,完成系统初始化;init进程是所有用户进程的祖先进程,即用户所有的进程都是通过init进程创建出来的

进程的标记状态
Linux的进程管理
图片来源:慕课网实战课程《编程必备基础》
上图是进程的五状态模型,Linux里进程同样有这样的状态机,可以通过man ps 命令来了解Linux里各进程状态的标记。

状态符号 状态说明
R (TASK_RUNNING),进程正处于运行状态
S (TASK_INTERRUPTIBLE),进程正处于睡眠状态
D (TASK_UNINTERRUPTIBLE),进程正处于IO等待的睡眠状态
T (TASK_STOPPED),进程正处于暂停状态
Z (TASK_DEAD or EXIT_ZOMBIE),进程正处于退出状态,或僵尸进程

Linux的进程管理

操作Linux进程的相关命令

ps命令

主要查看进程,常用于显示当前进程状态
ps命令常配合aux参数和ef参数和grep命令检索特定的进程
Linux的进程管理
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)信号可以无条件终止进程,其他信号进程有权忽略