Linux进程管理

systemd是Linux系统中最原始的进程,该进程在系统启动时启动,所有的其他进程都是其后代,在系统中通常使用systemctl命令工具对进程进行管理,使用方式是systemctl 选项 命令

查看进程

使用ps 选项命令实现,详细选项如下:

复制代码
-a:列出当前终端所有的进程。不显示系统进程
-e:列出所有的进程,等同于-A 
-f:显示不包含资源使用率的相关信息
‐H:以进程层级格式显示进程相关信息
-w:显示加宽可以显示较多的信息
-u:显示较详细的信息
-x:显示其他使用者的行程
-l:使用详细格式显示程序状态

也可以使用--sort=给输出排序,-c 希望查看的内容选项过滤信息,使用yum -y install psmisc安装服务后pstree树状显示进程,展示详细信息示例如下:

该信息分别包含:用户名,进程号pid,cpu占用率,内存占用率,占用虚拟内存大小,占用的常驻内存大小,执行的终端编号,该进程的状态,进程开始时间,使用时间,所执行的命令。STAT表示的状态有以下几种:

复制代码
D: 无法中断的休眠状态 ,将一直等待事件的发生或等待某种系统资源
R: 正在执行中
S: 可中断状态
T: 暂停执行
Z: 不存在但暂时无法消除,也叫僵尸进程
每个进程在运行结束后都会处于僵死状态,等待父进程调用进而释放系统资源,处于该状态的进程已经运行结束,但是它的父进程还没有释放其系统资源
W: 没有足够的内存可分配
<: 高优先序的进程
N: 低优先序的进程
+:前台进程
l:多线程进程
s:主进程(先导进程)

常用组合有ps aux以用户为中心组织显示进程信息,ps -ef显示所有进程完整信息,ps -efH以层级格式查看进程详细信息。

也可以使用top命令实时查看进程,通过-d指定刷新频率,-p指定进程号,-u指定用户。

删除进程

通过kill -l 信号编号 程序kill -s 信号名称 程序pid命令实现,常用信号如下:

复制代码
1	SIGHUP	重新加载配置
2	SIGINT	键盘中断^C
3	SIGQUIT	键盘退出
9	SIGKILL	强制终止
15	SIGTERM	终止(正常结束),缺省信号
18	SIGCONT	继续
19	SIGSTOP	停止
20	SIGTSTP	暂停^Z

也可以使用pkill 选项 名称的方式杀死进程,该方法会杀死符合名称的所有进程,选项详细为:

复制代码
name: 进程名
-u:指定用户名
-t:指定终端

进程优先级

目前cpu都以时间片轮转法工作,所以需要调整进程优先级来使得某些重要进程被最快解决,Linux中进程的优先级分为两种,实时和静态,系统通过量化的nice值对进程优先级进行管理。

实时优先级0-99.,数字越小优先级越高,

静态优先级,0-139,同样的数字越小优先级越高。

具体优先级可分为NI和PR,其中NI是给用户修改的,取值为-20---19,PR是内核动态调整动态的参照,取值为-99---39。

查看进程优先级

可以使用ps -l命令输出进程详细信息,其中包含NI和PR优先级内容,也可以使用top命令查看。

修改进程优先级

可以使用nice -n 优先级 程序在程序启动时指定优先级,

也可以使用renice 优先级 程序pid调整已有优先级。

后台任务

一些执行起来需要占用终端,和驻留监听等任务都适合放在后台运行,可以通过在命令后加 &的方式实现,如ping baidu.com & ,在任务执行时按下ctrl z会使任务暂停,该任务同样进入后台,交互式任务无法进入后台,进入后直接停止。

查看后台任务使用jobs 命令实现,输出中在前的序号为工作号,要将任务拿回到前台使用fg % 工作号实现,示例如下:

如果是暂停的任务,恢复到前台还会暂停,针对这种任务需要使用bg % 工作号的方法让其恢复运行。

后台任务是基于终端的,远程连接断开后自动停止,如果要让后台任务独立于连接,需要使用nohup 命令&方法,此时该命令就算在连接断开后还会在系统上运行,如果将后台命令加入/etc/rc.local文件,系统启动时就会自动执行。

总结

该部分内容不多,学习了在操作系统中查看删除进程的方法,以及如何调整进程优先级和前后台切换的内容,主要使用pstopkillnicejob命令,为什么没说进程创建呢?因为我们执行程序的过程就是创建进程,这部分不用单独学习。

相关推荐
Lana学习中10 小时前
【运维杂记】连接不上远程服务器的问题处理
运维·服务器
1892280486110 小时前
NV023固态MT29F16T08GWLCEJ9-QBES:C
大数据·服务器·人工智能·科技·缓存
AOwhisky10 小时前
MySQL 学习笔记(第一期):数据库基础与 MySQL 初探
运维·数据库·笔记·学习·mysql·云计算
Peace11 小时前
【Prometheus】
linux·运维·prometheus
LZZ and MYY12 小时前
RTS 在windows和Linux之间ShareMem
linux·运维·服务器
aningx12 小时前
openSUSE Leap 16.0 运行 sunshine 报错的解决方法
linux
爱学习的徐徐12 小时前
Linux 基础IO
linux·服务器
蛋蛋的学习记录12 小时前
C#窗体应用中使用EasyModbusCore通讯
服务器·c#·tcp
zt1985q12 小时前
本地部署源代码管理解决方案 Bitbucket Data Center 并实现外部访问
运维·服务器·数据库·网络协议·postgresql·源代码管理
xiaobobo333012 小时前
面向对象:linux内核中函数转数据的用法
linux·面向对象·隔离·函数指针绑定