centos系统之进程管理

为了更好地了解和控制Linux服务器的有序运行,需要管理员熟悉进程管理和计划任务设置的相关操作,以完成各种运行维护任务。

1、进程和程序的概念
(1)程序:保存在硬盘、光盘等介质中的可执行代码和数据,静态保存的代码
(2)进程:在CPU及内存中运行的程序代码,动态执行的代码。
进程有程序产生,是动态的,是一个运行着的、要占用系统运行资源的程序。
每个进程还可以有许多子进程;
未区分不同的进程,系统给每一个进程都分配了一个唯一的进程标识符(称PID)。

2、进程和程序的区别
(1)程序是静态概念,作为一种软件资源长期保存;而进程是程序的执行过程,是动态概念,有一定的生命周期,是动态产生和消亡的。
(2)程序和进程无一一对应关系。一个程序可以由多个进程共用;另一方面,一个进程在活动中有可顺序地执行若干个程序。

3、父进程与子进程
(1)子进程是由一个进程所产生的进程,而产生这个子进程的进程叫做父进程;
(2)在Linux系统中,使用系统调用fork创建进程。fork复制的内容包括父进程的数据和堆栈段以及父进程的进程环境
(3)父进程终止,那么子进程也随之自然终止。
(4)进程在Linux系统中呈树状结构,初始化进程是根节点,其他的进程均有父进程。

4、进程分类:
(1)前台进程:
在shell提示处输入命令后,创建一个子进程,运行命令,shell等待命令退出,然后返回到对用户提示符。即在前台运行,用户在它完成之前不能执行另一个命令。

(2)后台进程:
在shell提示处输入命令,如果后面跟着一个“&”符号,shell创建的子进程运行此命令,但不等待命令退出,而直接返回到对用户给出提示符。并且这条命令与shell同步运行,即在后台运行,后台进程必然是非交互式的。

(3)批处理进程:一个进程序列
(4)守护进程:又称为监控进程,是指那些在后台运行,并且没有控制终端的进程。

5、进程状态
(1)就绪:进程已经分配到资源,但因为其它的进程正占用CPU,所以暂时不能运行而等待分配CPU的状态。

(2)等待:因等待某种时间而暂时不能运行的状态。

(3)运行:进程分配到CPU,正在处理器上运行。

centos 5或6PID为1 的进程:init
centos 7 PID为1 的进程:systemd

6、查看进程的命令
(1)ps ——查看静态的进程统计信息
格式:ps aux ; ps -elf
选项说明:
a: 显示所有用户的进程
u: 显示用户名和启动时间
x: 显示没有控制终端的进程
e: 显示所有进程,包括没有控制终端的进程
l:长格式显示
f:显示程序间的关系

注:
1、USER:运行进程的用户
2、PID:该进程的ID
3、%CPU:CPU占用率
4、%MEM:内存占用率
5、VSZ:该进程使用掉的虚拟内存量
6、RSS:该进程占用的实际的内存量
7、TTY:该进程在哪个终端上运行,若与终端己无关,则显示“?”。
8、STAT:该程序的状态,主要状态有
R(正在运行):进程正在运行,或者被运行
S(中断):该进程目前正在睡眠中,可被某些信息唤醒。
T(停止):该进程目前正在侦测或者停止了
Z(僵死):该进程应该已终止,但父进程却无法正常的终止他,造成僵尸进程的状态。
D:不可中断
9、START:该进程被触发启动的时间
10、TIME:该进程实际使用CPU运作的时间
11、COMMAND:该进程的实际指令

注:
1、F:代表这个程序的旗标(flag),其中“4”代表使用者为super user
2、S:代表这个程序的状态(STAT),与ps aux的STAT状态一致
3、UID:该进程的程序用户
4、PID:该进程的进程号
5、PPID:父进程的进程号
6、C:CPU使用的资源百分比
7、PRI:priority的缩写,优先执行权,值越小越早被执行。
8、NI:Nice值,表示进程可被执行的优先级的修正数值。
9、ADDR:内核函数,指出该进程在内存的那个部分,如果是running的进程,
一般显示“-”
10、SZ:该进程使用掉的内存大小
11、WCHAN:该进程是否正在运行状态,“-”表示正在运行
12、TTY:该进程的终端机位置
13、TIME:使用掉的CPU时间
14、CMD:该进程的指令

注意:ps是显示瞬间进程的状态,并不动态连续;如果想对进程进行实时监控应该用top命令。

ps自定义显示字段:
pa axo 显示字段

(2)、top ——实时监测进程,查看系统资源使用情况以及进程排名信息

说明:顺序为从左到右
1、第一行显示了当前时间、系统的运行时间、登录的用户数、系统的平均负载(平均负载有3个值,最近1分钟的,最近5分钟的,最近15分钟的,值越大,说明系统的负载越高)

2、第二行显示了进程的概要信息,top命令的输出中将进程叫做任务(task),有多少进程处在:运行、休眠、停止、僵化的状态(僵化是指进程完成了,但父进程没有响应)

3、CPU占用信息:us,用户占用率;sy,内核占用率;ni,优先级调度占用;id,空闲CPU百分比;wa,I/O等待占用;hi,硬件中断占用;st,虚拟化占用。
内存占用(Mem)信息:total,总内存空间;used,已用内存;free,空闲内存;buffers,缓存区域。
交换空间(Swap)信息:total,总交换空间;used,已用交换空间;free,空闲交换空间;cached,缓存空间

top进程信息管理:
M——按内存的使用排序
P——按CPU使用排序
N——以PID的大小排序
R——对排序进行反转
f——自定义显示字段
1——显示所有CPU的负载
Z——显示彩色

——向前
<——向后
w——保存top自定义字段,保存到~/.toprc

动态查看进程top
top -d 1 -p 10126 查看指定进程的动态信息
top -d 1 -u apache 查看指定用户的进程
top -d -1 -b -n 2 > top.txt 将2次铜牌信息写入到文件中

(3)查看指定进程的PID
a、查看进程的pid 文件
b、ps aux | grep 进程名
c、pgrep -l 进程名
d、pstree 查看进程树,以树状形式显示各进程之间的关系

7、控制管理进程
使用信号控制进程

(1) 列出系统所有支持的信号——kill -l

常用的信号:

编号 信号名 作用
1 SIGHUP 重新加载配置
2 SIGINT 键盘中断
3 SIGQUIT 键盘退出
9 SIGKILL 强制终止
15 SIGTERM 终止(正常结束),默认信号
18 SIGCONT 继续
19 SIGSTOP 停止
20 SICTSTP 暂停

(2)使用kill来管理进程:需要使用进程的PID号来作为对象处理。

例子:给apache进程发信号1,15
[root@lq1 ~]# ps aux | grep http

[root@lq1 ~]# kill -1 7993
[root@lq1 ~]# ps aux | grep http

[root@lq1 ~]# kill 7993
[root@lq1 ~]# ps aux | grep http

注:上图进程不是httpd服务进程,而是grep进程

(3)使用killall来管理进程:可以通过进程名来管理进程

[root@lq1 ~]# killall -1 httpd

[root@lq1 ~]# killall httpd


(4)使用pkill命令来管理进程:可以根据进程的名称、运行该进程的用户、进程所在的终端、进程PID等来管理进程

例子:
a、踢出一个从远处登录本机的用户
pkill -u 用户名

b、终止一个终端上的所有进程
pkill -t pts/2

c、终止一个终端上所有进程,并结束该终端
pkill -9 -t pts/2

8、进程优先级
(1)Linux进程调度及多任务
每个CPU(或CPU核心)在一个时间上只能处理一个进程,通过时间片技术,Linux实际能够运行的进程(和线程数)可以超出实际可用的CPU及核心数量。Linux内核进程调度程序将多个进程在CPU核心上快速切换,从而给用户多个进程在同时运行的印象。

(2)相对优先级nice
由于不是每个进程都与其它进程同样重要,可告知进程调度程序为不同的进程使用不同的调度策略。常规系统上运行的大多数进程所使用的调度策略为SCHED_OTHER(也称为SCHED_NORMAL),但还有其它一些调度策略用于不同的目的。

SCHED_OTHER调度策略运行的进程的相对优先级称为进程的nice值,可以有40中不同级别的nice值。

nice值越高:表示优先级越低,容易将CPU使用量然给其它进程
nice值越低:表示优先级越高,不倾向于让出CPU

(3)查看进程的nice基本
使用top查看nice级别:
NI:实际nice级别
PR:将nice级别显示为映射到更大优先级对列,-20映射到0,+19映射到39

使用ps查看nice级别:
TS表示该进程使用的调度策略为SCHED_OTHER
nice:实际nice级别

(4)启动具有不停nice级别的进程
启动进程时,通常会继承父进程的nice级别,默认为0
nice -n nice值 进程

(5)更改现有进程的nice级别
a、使用top更改nice级别
r 调整进程的优先级(Nice Level)

b、使用shell更改nice几倍
renice nice值 PID

9、后台进程控制
(1)、作业控制——jobs
作业控制是一个命令行功能,允许一个shell实例赖云霞和管理多个命令。
如果没有作业控制,父进程fork()一个子进程后,将sleeping,知道子进程退出。
使用作业控制,可以选择性暂停,恢复,以及异步运行命令,让shell可以在子进程运行期间接收其它命令。

foreground——前台进程是在终端中运行的命令,该终端为进程的控制终端。前台进程接收键盘发生的输入和信号,并允许从终端读取或写入到终端。

backgroup——后台进程没有控制终端,它不需要终端的交互。

例子:
[root@lq1 ~]# sleep 10000 & #运行程序时,让其在后台执行

(2)、jobs——查看后台进程列表
[root@lq1 ~]# jobs -l

(3)、fg——将后台进程调至前台运行
格式:fg 后台进程列表序号

(4)、bg——将后台停止的进程调为后台运行
格式:bg 后台进程列表序号

案例:端网后,重新连接,恢复之前终端中的操作
yum install -y screen

screen -S 自定义名称 #定义恢复名称

断开,重新连接
输入screen -list 恢复列表

screen -r 8193 #恢复之前操作

转载于:https://blog.51cto.com/13496696/2352000

你可能感兴趣的:(centos系统之进程管理)