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

相关推荐
ALex_zry2 小时前
SSH主机密钥验证失败:全面解决方案与技术手册
运维·ssh
厦门辰迈智慧科技有限公司3 小时前
城市排水管网流量监测系统解决方案
运维·服务器
我没有开挂3 小时前
旧 docker 版本通过 nvkind 搭建虚拟多节点 gpu 集群的坑
运维·docker·容器
qq_339282234 小时前
centos中libc.so.6No such file的解决方式
linux·运维·centos
leoufung4 小时前
ECPF 简介
linux·网络·kernel
小鸡,啄米4 小时前
centos9安装docker 配置docker代理
运维·docker·容器
水银嘻嘻4 小时前
12 web 自动化之基于关键字+数据驱动-反射自动化框架搭建
运维·前端·自动化
在肯德基吃麻辣烫5 小时前
Netdata在Ubuntu环境下的安装与配置:构建实时系统监控与性能分析平台
linux·运维·ubuntu
国际云,接待5 小时前
云服务器的运用自如
服务器·架构·云计算·腾讯云·量子计算
不念霉运5 小时前
Gitee DevOps:中国企业数字化转型的“本土化加速器“
运维·gitee·团队开发·代码规范·devops·代码复审