LINUX进程管理

作者:神秘网友 发布时间:2020-09-07 19:44:03

LINUX进程管理

LINUX进程管理

墙上芦苇,头重脚轻根底浅;山间竹笋,嘴尖皮厚腹中空。——解缙

Linux下的进程管理主要是用于查看进程的健康状态,以便及时发现和处理问题,从而保护我们的系统。

Linux的进程管理分为三个过程:
1. 查看进程
2. 杀死进程
3. 修改进程优先级

查看进程

ps命令

ps命令用于查看用户当前进程,他有两个参数:aux-le

aux可看进程的内存占比率,是我们常用的参数,-le可查看进程的优先级。

LINUX进程管理

图中的各项各是代表什么呢?

USER 该进程由哪个用户产生(可见大部分进程为root产生)
PID 进程ID号(系统不看文件名和用户名,只识别ID号,/sbin/init为第一个进程,为所有进程之父进程,ID号永远为1)
%CPU 占用CPU资源百分比,越高越耗费资源
%MEM 占用物理内存百分比,越高越耗费资源
VSZ 占用虚拟内存大小,单位KB
RSS 占用实际物理内存大小,单位KB
TTY 该进程在哪个终端运行的,tty1-tty7代表本地控制台终端,tty-tty6为本地的字符界面终端,tty7是图形终端,tty7为图形界面终端,pts/0-255代表虚拟终端(远程登录)。“?”表示这些进程不是由用户通过终端启动,由内核直接启动,为系统进程。
STAT 进程状态(R:运行,S:睡眠,T:停止,s:包含子进程,+:位于后台,Z:僵尸进程,N:优先级较低进程,<:优先级较高进程),绝大多数进程在休眠,PS aux在运行,说明PS命令和ls命令一样回车就会中止,但是PS命令只是正好在抓进程而已,抓到自己在运行,所以进程耗费资源少。
START 该进程的启动时间,大于1000用月表示
TIME 该进程占用CPU的运算时间,注意不是系统时间,越长越耗费资源
COMMAND 产生此进程的命令名

PS命令主要用于查看当前哪些进程在运行,方便管理,所以看好进程名。

pstree命令

pstree命令也是用来查看进程,不过查看的方式不同,它有两个参数,-p可以查看进程ID号,-u查看进程所属的用户。

LINUX进程管理

图中可看见init进程为所有进程的父进程,这里最好每次远程登录终端都正常退出,因为我们只有255个远程服务,虽然多,但是············。

top命令

LINUX进程管理

执行top命令后我们可以看到他是不断在刷新的,默认每3秒刷新一次进程的状态,和windows下的任务管理器一样,但是它是每秒刷新一次,top命令是判断进程健康状态最好的。

说一下他的参数:

-d 指定top命令每隔几秒更新,默认为三秒
-n 指定top命令执行的次数,一般和“-b”选项合用,(可使用将所有进程状态输出到一个文本中)ex: top -b -n 1(刷新几次) > top.log
-b 使用批处理模式输出,一般和“-n”选项合用

可以发现,在top命令交互模式中是有可执行命令的:

?/h 显示交互模式的帮助
p 以CPU使用率排序,默认就是此项
M 以内存的使用率排序
N 以PID排序,从大到小
q 退出top

top下的前三行内容比较重要,这里解释一下:

内容 说明
21:02:34 系统当前时间
up 3 days,1:05 系统的运行时间,本机已经运行1天13小时32分钟
2 users 当前登录了两个用户
load average: 0.00,0.00,,000 系统在之前1分钟,5分钟,15分钟的平均负载(CPU时间内CPU占比平均值)。一般认为小于1小时,负载较小,大于1小时,系统已经超出负荷(经验值:目前按照CPU核数判断,双核为2,四核为4)

系统运行的时间不要过长,我们要让我们的服务器定期的重启,让他归零,因为服务器运行时间过长会产生很多垃圾文件,我们要保证系统不出故障,必须定期重启,这也就是网络游戏为什么要定期维护的原因。一般游戏是一周维护一次。

内容 说明
Swap:0k total 交换分区(虚拟内存)的总大小
0k used 已经使用的交互分区大小
0k free 空闲交换分区的大小
1234484k cached 作为缓存的交互分区的大小

这里cached是指缓存,可以加速数据的读取,内存从cached读取数据的速度比从硬盘快,而buffer是缓冲,他可以加速数据的写入,但是它的数据要先保存在内存中,等有空才会一起从内存写入硬盘,所以有丢失数据的风险。

swap分区可以手动添加。

杀死进程

这里要注意了,杀死进程可不是闹着玩的,不能盲目的杀死进程,在杀进程之前必须要看是什么进程,然后能否正常关闭,万不得已不要直接杀死进程。

在Windows下我们使用任务管理器来查杀进程,而在Linux下我们使用相关的命令来杀死进程。

kill:-l,查看可用进程信号,杀死单一进程;
pkill:杀死多个进程。
killall:杀死多个进程。

LINUX进程管理

几个重要信号名称以及说明:
LINUX进程管理

其中:
代号1:平滑重启,将应用程序重新启动,但是不终止已经登录用户;
ex:kill -1/-HUP ID,不跟进程名;

代号9:强制杀死(慎用);
ex:kill -9 PID;

killall 【选项】【信号】【进程名】 ,按照进程名杀死进程 -i:交互式,询问是否要杀死某个进程 -I:忽略进程名大小写

pkill:和上面一样,-t:按照终端号踢出用户,先w查看终端号,用root命令,pkill -9 -t pts/0.(可举例),w:查看当前登录用户。

修改进程优先级

   Linux操作系统是一个多用户、多任务的操作系统,linux系统中同时运行着非常多的进程。但是CPU在同一个时钟周期内只能运算一个指令。CPU处理每个进程的方式是公平的,他给时间分片,给每个进程一个时间片来执行,当时间用完后不管有没有完成又去处理下一个进程,所以,每个进程都由CPU轮流处理,直到处理完毕。

 而我们的电脑CPU又分几核,则有几个CPU来共同处理一个进程,因此进程的优先级就决定了执行的快慢,而CPU的运算速度一般是2GHZ。这里指一秒钟计算2G次,64位系统每次运算8个字节,这里可算出CPU每秒运算多少字节。

优先级:more 命令分页显示 ps -le
PRI代表Priority,NI代表Nice。这两个值都是优先级,数字越小代表该进程优先级越高。
生效的是PRI,但是这个不能直接修改,只能修改NI,但是系统最终优先级是两者相加。

LINUX进程管理

nice命令可以给新执行的命令直接赋予NI值,但是不能修改已经存在进程的NI值 -n:NI值:给命令赋予NI值
ex:nice -n -5 ls

renice命令是修改已经存在进程的NI值的命令
renice -10 2125(PID)

LINUX进程管理相关教程

  1. Mariadb数据库配置及管理
  2. ssh搭建图书管理系统之数据库编写
  3. Linux 中的僵尸进程与孤儿进程
  4. Linux 数据可视化工具
  5. 【SSH项目实战】国税协同平台-18.信息发布管理需求分析CRUD
  6. AIDL Service实现跨进程通信
  7. Linux内核设计与实现读书笔记(十二)-内存管理
  8. linux内核中的排序接口--sort函数