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 | 显示哪个进程在调用 |

相关推荐
Johny_Zhao3 小时前
Docker + CentOS 部署 Zookeeper 集群 + Kubernetes Operator 自动化运维方案
linux·网络安全·docker·信息安全·zookeeper·kubernetes·云计算·系统运维
小毛驴8504 小时前
Linux 后台启动java jar 程序 nohup java -jar
java·linux·jar
一心0925 小时前
ubuntu 20.04.6 sudo 源码包在线升级到1.9.17p1
运维·ubuntu·sudo·漏洞升级
好好学习啊天天向上5 小时前
世上最全:ubuntu 上及天河超算上源码编译llvm遇到的坑,cmake,ninja完整过程
linux·运维·ubuntu·自动性能优化
你想考研啊5 小时前
三、jenkins使用tomcat部署项目
运维·tomcat·jenkins
tan180°6 小时前
MySQL表的操作(3)
linux·数据库·c++·vscode·后端·mysql
代码老y6 小时前
Docker:容器化技术的基石与实践指南
运维·docker·容器
典学长编程6 小时前
Linux操作系统从入门到精通!第二天(命令行)
linux·运维·chrome
wuk9987 小时前
基于MATLAB编制的锂离子电池伪二维模型
linux·windows·github
你想考研啊9 小时前
四、jenkins自动构建和设置邮箱
运维·jenkins