Linux 进程管理

一.进程

1.基本介绍

在Linux中每一个执行的程序都称之为进程,每一个进程都会分配一个进程号(PID)。进程以前台和后台两种方式存在,前台进程就是我们可以在屏幕上操作的,后台进程我们无法在屏幕上看到。

程序是静态的,进程是动态的,程序 run 起来就变成进程了。

2.ps 指令

ps 指令可以查看当前系统中有哪些进程,以及这些进程的执行状况。

可以直接使用 ps指令,但是得到的信息有限:

复制代码
ps

我们可以搭配一些选项来写:

|----|---------------|
| -a | 显示当前终端的所有进程信息 |
| -u | 以用户的格式显示进程信息 |
| -x | 显示后台进程运行的参数 |

我们可以将上面的选项一起写:

复制代码
ps -aux

解释一下第一行的表头的意思:

|---------|----------------------------------------------------------------------------|
| USER | 进程执行用户 |
| PID | 进程号 |
| %CPU | 进程占用cpu的百分比 |
| %MEM | 进程占用物理内存的百分比 |
| VSZ | 进程占用虚拟内存的大小,单位是KB |
| RSS | 进程占用物理内存的大小,单位的KB |
| TTY | 终端 |
| STAT | 运行状态,S-睡眠,s-该进程是会话的先到过程,N-进程拥有比普通优先级更低的优先级,R-正在运行,D-短期等待,Z-僵死进程,T-被跟踪或者被停止 |
| START | 执行的开始时间 |
| TIME | 占用的cpu时间 |
| COMMAND | 启动进程所用的命令和参数,过长会被截断 |

3.查看父进程

我们可以通过以全格式显示当前所有的进程来查看进程的父进程。

复制代码
ps -ef

-e 显示所有进程,-f 全格式

对于第一行表头,只解释上面没有的部分:

|------|-------------------------------------------------------------------------|
| PPID | 父进程的进程号 |
| C | CPU用于计算执行优先级的因子。数值越大,表明进程是CPU密集型运算,执行优先级会降低;数值越小,表明进程是I/O密集型运算,执行优先级会提高 |

4.终止进程

若是某个进程执行一半需要停止时,或是已消耗了很大的系统资源时,此时可以考虑停止该进程,我们就要使用终止进程指令来结束这个进程。

基本语法:

复制代码
kill [选项] 进程号
killall 进程名称

常用选项:-9:强迫进程立即停止

5.进程树

以树的形式显示进程。

基本语法:

复制代码
pstree [选项]

常见选项:

|----|----------|
| -p | 显示进程PID |
| -u | 显示进程所属用户 |

二.服务管理

1.介绍

服务(service)本质就是进程,运行在后台,通常会监听某个端口,等待其他程序的请求,因此又称其为守护进程。

service指令管理的服务在**/etc/init.d**查看:

复制代码
ls -l /etc/init.d/

service指令管理的服务还可以使用指令查看:

复制代码
setup

注:前面有*指的是这个服务在系统开启后自动开启,没有* 要手动开启。

2. chkconfig指令

可以通过该指令给服务的各个运行级别设置自启动或关闭。chkconfig指令管理的服务再**/etc/init.d** 查看。运行级别是什么请看:Linux 实用指令_虚拟机init3命令-CSDN博客

基本语法:

复制代码
//查看服务
chkconfig --list
chkconfig 服务名 --list
//设置自启动
chkconfig --level 级别 服务名 on/off

注意,设置完自启动后要重启系统才能生效。

3.systemctl 指令

在Centos7.0后,很多服务不使用chkconfig管理,而是使用systemctl管理。systemctl 指令管理的服务在 /usr/lib/systemd/system 查看。

基本语法:

复制代码
systemctl [start|stop|restart|status] 服务名 

使用这种方式设置的自启动或关闭只是临时生效,重启了就没了,如果想要永久生效,要使用:

复制代码
systemctl [enable|disable] 服务名

设置自启动:

复制代码
//查看服务开机启动状态
systemctl list-unit-files
//设置自启动
systemctl enable 服务名
//关闭自启动
systemctl disable 服务名
//查询某个服务是否为自启动
systemctl is-enabled 服务名

4. firewall 指令

该指令主要用于打开或关闭指定端口。

基本语法:

复制代码
//打开端口
firewall-cmd --permanent --add-port=端口号/协议
//关闭端口
firewall-cmd --permanent --remove-port=端口号/协议
//查询端口是否开放
firewall-cmd --query-port=端口号/协议
//重新载入才能生效
firewall-cmd --reload

查看端口号和协议的方法:

复制代码
netstat -anp

三.动态监控

1.top指令

与ps指令相似,都可以查看正在执行的进程,与ps不同的是top会更新正在运行的进程。

基本语法:

复制代码
top [选项]

选项:

|-------|------------------------|
| -d 秒数 | 指定top命令每隔几秒更新,默认3秒 |
| -i | 使top不显示任何闲置或者僵死进程 |
| -p | 通过指定监控进程ID来仅仅监控某个进程的状态 |

在进入top指令界面后,我们可以使用一些操作来让显示发生一定的变化:

|---|--------------------|
| P | 以 CPU 使用率排序,默认就是此项 |
| M | 以内存的使用率进行排序 |
| N | 以 PID 排序 |
| q | 退出 top |
| u | 输入用户名即可查看这个用户的进程 |
| k | 输入要结束的进程ID |

2.监控网络状态

基本语法:

复制代码
netstat [选项]

|-----|-----------|
| -an | 按一定顺序排列输出 |
| -p | 显示哪个进程在调用 |

相关推荐
裴东青1 小时前
10-实战:RuoYi-Cloud的自动化发布
运维·ci/cd·自动化
江公望1 小时前
Ubuntu htop命令,10分钟讲清楚
linux·服务器
哎呦,帅小伙哦1 小时前
Linux 时间:从原子钟到 clock_gettime 的每一面
linux·运维·服务器
sxgzzn1 小时前
新能源场站数智化转型:基于数字孪生与AI的智慧运维管理平台解析
大数据·运维·人工智能
张小姐的猫2 小时前
【Linux】多线程 —— 线程互斥
linux·运维·服务器·c++
CodeMartain2 小时前
Dify Windows 原生部署(无 Docker、纯本地)
运维·docker·容器
xxx1x1x2 小时前
极客向:DLL/运行库故障的底层逻辑与自动化修复方案
运维·自动化·dll文件·dll·dll修复·dll缺失·dll一键修复
YuanDaima20482 小时前
Linux 进阶运维与 AI 环境实战:进程管理、网络排错与 GPU 监控
linux·运维·服务器·网络·人工智能
lolo大魔王4 小时前
Linux 数据文件处理实战:排序、搜索、压缩、归档一站式详解
linux·运维·服务器
llrraa20104 小时前
配置docker国内镜像源
运维·docker·容器