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

相关推荐
华纳云IDC服务商1 分钟前
服务器被DDOS跟CC攻击了怎么处理,如何抵御攻击?
服务器·网络·安全
顾安r3 分钟前
12.18 脚本网页 C标准库
linux·c语言·stm32·嵌入式硬件·html5
NineData3 分钟前
NineData 数据库 DevOps 正式支持谷歌云,全面接入 GCP 数据源
运维·数据库·devops·ninedata·gcp·玖章算术·数据智能管理平台
从零开始学习人工智能4 分钟前
《8076 能通 9003 却超时?一次 Docker 容器跨网段排障小记》
运维·docker·容器
A13247053124 分钟前
Linux文件查找:find和locate命令入门
linux·运维·服务器·网络·chrome
咕噜企业分发小米4 分钟前
阿里云与华为云服务器哪个更利于人工智能?
服务器·阿里云·华为云
物联网软硬件开发-轨物科技5 分钟前
【轨物新闻】轨物科技光伏清洁机器人智能控制和运维解决方案正式上线华为鲲鹏解决方案市场
运维·科技·机器人
一周困⁸天.5 分钟前
DevOps
运维·devops
飞机火车巴雷特6 分钟前
PyCharm通过跳板机连接隔离内网服务器
运维·服务器
峥嵘life8 分钟前
Android16 EDLA 认证测试BTS过程介绍
android·java·linux