进程管理
进程是一个二进制程序的执行过程,在Linux操作系统中,向命令行输入一条命令,按下回车,便会有一个进程被启动。
从计算机用户的角度看,一台计算机可同时运行多个进程,但实际上,一个单核的CPU同一时
刻只能处理一个进程,用户之所以会任务同时有多个进程在运行,是因为计算机系统采用了“多
道程序设计”技术。
所谓多道程序设计,是指计算机允许多个相互独立的程序同时进入内存,在内核的管理控制之下,相互之间
穿插运行
。多道程序设计必须有硬件基础作为保障。
进程状态
通常进程的状态被划分为五种:初始态、就绪态、运行态、睡眠态和终止态。初始态和终止态一般不进行讨论,因为当初始化完成后,进程会立刻转化为就绪态;进程运行完毕会立刻转为终止
态。
1、就绪态
处于就绪态(Ready)的进程,所需的其他资源已分配到位,此时只等待cpu,当可以使用cpu
时,进程会立刻变为运行态。
2、运行态
进程处于运行态(Execting)时会占用cpu,处于此状态的进程的数目必定小于等于处理器的数
目,即每个cpu上至多能运行一个进程。
3、睡眠态处于睡眠态(
Sleeping)的进程会因某种原因而暂时不能占有cpu。睡眠态分为不可中断的睡眠和可中断的睡眠。
进程管理命令
Linux系统为每个进程分配了一个唯一确定的标识符——PID(Process Identifer,进程标识
符)。内核可根据PID来管理进程的相关信息。Linux系统中提供的进程管理命令大多都通过PID
来管理进程。常用的进程管理命令有ps、top、pstree、pgrep、nice、jobs、bg、fg、kill等。
ps是“Process Status”的缩写。在命令行输入“ps”后回车就能查看当前系统中正在运行的进
程。ps的命令格式如下:
ps [ 选项 ] [ 参数 ]
ps命令可以与一些选项搭配,实现更丰富的功能。它的选项有两种风格:SysV和BSD。SysV风
格的选项需要与“-”,一起使用,BSD风格的选项可以直接使用。
BSD风格
选项 | 说明 |
---|---|
a | 显示当前终端机下的所有进程,包括其他 |
u | 以用户形式,显示系统中的进程 |
x | 忽视终端机,显示所有进程 |
e | 显示每个进程使用的环境变量 |
r | 只列出当前终端机中正在执行的进程 |
SysV风格
选项 | 说明 |
---|---|
-a | 显示所有终端机中除阶段作业领导之外的进程 |
-e | 显示所有进程 |
-f | 除默认显示外,显示UID、PPID、C、STIME项 |
-o | 指定显示哪些字段,字段名可以使用长格式,也可使用“%字符”的短格式指定,多个字段名使用逗号分割 |
-l | 使用详细的格式显示进程信息,等同于BSD风格的选项 |
top
ps命令执行后,会显示执行命令那一刻系统中进程的相关信息,若想使信息动态地显示,可以用top命令。top的命令格式如下:
top [ 选项 ]
选项
:
-d
秒数:指定
top
命令每隔几秒更新。默认是
3
秒;
-b
:使用批处理模式输出。一般和
"-n"
选项合用,用于把
top
命令重定向到文件中;
-n
次数:指定
top
命令执行的次数。一般和
"-"
选项合用;
-p
进程
PID
:仅查看指定
ID
的进程;
8
-s
:使
top
命令在安全模式中运行,避免在交互模式中出错误;
-u
用户名:只监听某个用户的进程;
执行top命令后可通过热键对显示的信息进行操作,常用的热键及其对应的功能如表所示。
热键 | 说明 |
---|---|
l | 控制是否显示平均负载和启动时间(第一行) |
t | 控制是否显示进程统计信息和cpu状态信息(第2、3行) |
m | 控制是否显示内存信息(第4、5行) |
M | 根据常驻内存集RES大小为进程进行排序 |
P | 根据%CPU为进程排序 |
T | 根据TIME+为进程排序 |
r | 重置一个进程的优先级 |
i | 忽略闲置和僵死进程 |
k | 终止一个进程 |
高亮显示正在运行的进程的快捷键
按z选项在运行top命令将显示运行进程的颜色,这可能有助于您更容易识别正在运行的进程。
显示进程的绝对路径的快捷键
在运行top命令时按下c选项,将会显示正在运行的进程的绝对路径。
修改`top`的延迟或设置屏幕刷新间隔的快捷键
默认屏幕刷新间隔为3.0秒,同样可以在运行top命令中按d选项进行更改,如下图所示
保存`top`命令结果的快捷键
要将运行中的top命令的结果输出保存到文件/root/中。toprc使用以下命令。
top -n 1 -b>top-output.txt
获取`top`命令帮助的快捷键
按h选项获得顶部命令帮助。
在特定的重复之后退出`top`命令的快捷键
top输出保持刷新,直到你按下q。
top 命令下常用的快捷键shift+e 切换内存显示模式(可重复按键切换)z 切换是否彩色显示(可重复按键切换)m 切换内存显示模式(可重复按键切换)e 切换底部进程中单位的显示模式(可重复按键切换)b 切换高亮选中(可重复按键切换)W 把当前配置保存到文件中,下次启动 top 会使用当前的配置h 进入帮助菜单 ( 进入菜单后,可按 ESC 或 q 退出帮助菜单 )q 退出 top 命令
pstree
pstree命令以树状图的形式显示系统中的进程,可以直接观察到进程之间的派生关系。
安装pstree
yum -y install psmisc
pstree命令的格式如下:
pstree [ 选项 ]
pstree命令中的常用选项如表所示。
选项 | 说明 |
-a | 显示每个进程的完整命令 |
-c | 不使用精简标识法 |
-h | 列出树状图,特别标明当前正在执行的进程 |
-u | 显示用户名称 |
-n | 使用程序识别码排序 |
pgrep
pgrep命令根据进程名从进程队列中查找进程,查找成功后默认显示进程的pid。pgrep命令的格
式如下:
pgrep [选项] [参数]
Linux系统中可能存在多个同名的进程,pgrep命令可以通过选项缩小搜索范围,其常用选项如
表所示。
选项 | 说明 |
---|---|
-o | 仅显示同名进程中pid最小的进程 |
-n | 仅显示同名进程中pid最大的进程 |
-p | 指定进程父进程的pid |
-t | 置顶开启进程的终端 |
-u | 指定进程的有效用户id |
nice
相对优先级nice
可以有四十多种不同的nice值级别。(从-20到19)
nice值越高:表示优先级越低,如+19表示该进程容易将cpu使用量让给其他进程。
nice值越低:表示优先级越高,如-20,该进程不倾向让出cpu。
nice命令用于设置Linux系统中进程的nice值,该命令的格式如下:
nice [选项] [参数]
nice选项常用的选项为-n,n表示优先级,是一个整数。
# nice –n 5 bash# nice –n 6 top
jobs
使用jobs命令可以查看Linux系统中的作业列表及作业状态,进程中的作业也有编号,编号从1开始。Linux系统中作业从用户角度进行编号,进程从系统管理员的角度进行编号。jobs命令的语
法格式如下
jobs [ 选项 ] [ 参数 ]
当选项和参数缺省时,默认显示作业编号、作业状态和启动作业的命令
选项 | 说明 |
-l | 显示进程号 |
-p | 仅显示作业对应的进程号 |
-n | 显示作业状态的变化 |
-r | 仅显示运行状态的任务 |
-s | 仅显示停止状态的任务 |
bg和fg
Linux系统中可以使用bg命令和fg命令,使进程在前台和后台之间进行切换。
bg命令的作用是,将进程放入后台运行,使前台可以执行其它任务。其命令格式如下:
bg 参数
fg命令的作用与bg相反,是将后台的进程调往前台。其命令格式如下:
fg 作业号
使用时,先用 jobs 查看作业,然后通过 bg/fg 带上 job 的编号即可切换
kill
kill命令用来终止正在运行的进程,它的工作原理是发送某个信号到指定进程,以终止该进程。
kill的命令格式如下:
kill [ 选项 ] [ 参数 ]
kill命令的选项一般是“-信号编号”,参数一般是PID。除管理进程外,kill命令也可用于查看系统
最常用的信号为9号信号SIGKILL,该信号不能被忽略,可以无条件终止指定进程。除SIGKILL
外,Linux系统中常用的信号及其功能分别如下:
使用kill命令的“-l”选项可以打印系统中预设的所有信号,如图2-12为CentOS 7中的信号列
表。
![](https://i-blog.csdnimg.cn/blog_migrate/43213d414266f77baadcc6e4a0f14f65.png)
SIGINT:中断进程,使用快捷键Ctrl+C可实现相同功能。
SIGQUIT:退出进程,使用快捷键Ctrl+\可实现相同功能。
SIGTERM:终止进程。
SIGCONT:使已停止的进程继续执行。
SIGSTOP:暂停进程,使用快捷键Ctrl+Z可实现相同功能
中的信号。
服务管理
Linux系统提供了特定的命令,以便管理各种服务,在CentOS7之前的版本中,用于管理服务的命令为service和chkconfig,CentOS7及其之后的版本统一使用systemctl命令管理服务。
systemctl命令实际上是service和chkconfig命令的组合,该命令的格式如下:
systemctl 功能 服务名称
systemctl命令功能的基础取值与含义如下:
enable:使指定服务开机自启;
disable:取消指定服务开机自启;
start:启动指定服务;
stop:停止指定服务;
status:检查指定服务运行情况,列出该服务的详细信息;
restart:重启指定服务;
reload:重新加载指定服务的配置文件
Linux系统中常使用systemctl命令管理的服务如表所示。
服务名称 | 说明 |
dovect | 邮件服务器中的POP3/IMAP服务的守护进程,主要用于收取邮件 |
httpd | apache服务的守护进程 |
firewalld | CentOS7及之后版本中防火墙服务的守护进程 |
mariadb | mariadb数据库服务的守护进程 |
named | DNS(域名系统)服务的守护进程,用于解析域名 |
network | 网络服务的守护进程,用于管理网络 |
nfs | NFS(网络文件系统)服务的守护进程,用于实现Linux系统间的文件分享 |
vsftpd | vsftp服务的守护进程,用于实现文件传输(FTP服务) |
xinetd | CentOS7级以后版本的超级守护进程,用于管理多种轻量级Internet服务 |
postfix | 邮件服务中IMAP服务的守护进程,主要用于实现邮件发送 |