Linux实操篇之进程管理详解

 更新时间:2026年05月19日 16:08:14   作者:贼爱学习的小黄  
文章介绍了Windows和Linux中进程管理的相关知识,包括如何打开任务管理器、进程的父进程、进程树等法、服务管理等法(如service、chkconfig和systemctl)以及动态监控(如top和netstat)等内容

进程

进程这个东西相信大家都有接触过,我们那Windows举例,小伙伴们平时打游戏的时候有没有遇到黑屏的情况,反正小黄以前的电脑不太好,有时候进游戏就黑屏显示不起来了,这时候相信大家都跟小黄一样选择打开任务管理器(这也是小黄人生中记得第一个快捷键CTRL+ALT+数字点)Windows中的任务管理器是这样的,显示了占用CPU等信息。

Linux中的进程

我们先来说说在Linux下如何打开我们所谓的任务管理器吧

ps -aux
-a: 显示当前终端的所有进程信息
-u: 以用户的格式显示进程信息
-x: 显示后台进程运行的参数
# 查看所有信息有点长,建议使用more
ps -aux  | more

接下来我们一一介绍每一列显示信息的含义

  • USER : 此进程是由哪个用户开启的
  • PID : 进程的唯一ID号
  • %CPU : 进程占用CPU的百分比
  • %MEM : 进程占用内存的百分比
  • VSZ : 进程占用虚拟内存的大小(KB)
  • RSS : 进程占用物理内存的大小(KB)
  • TTY : 终端名称,一般是缩写
  • STAT : 进程状态,S-睡眠,s-表示该进程是会话的先导进程,N-表示进程拥有比普通优先级更低的优先级,R-正在运行,D-短期等待,Z-僵死进程(遇到这种情况就要注意了,说明进程已经失效却还没有释放内存),T-被跟踪或者被停止等。
  • STATT : 进程的启动时间
  • TIME : 进程占用CPU的总时间
  • COMMAND : 启动进程所用的命令和参数,如果过长会被截断显示

父子进程

这个概念应该非常好理解,我们来看一下Linux中如何查看进程的父进程

我们通过一个应用实例来学习:以全格式显示当前所有的进程,查看sshd的父进程信息

sshd就是我们远端连接服务器的一个命令

  • ps -ef 以全格式显示当前所有进程
  • -e:显示所有进程
  • -f:全格式

我们还是先来看一下各列描述着什么样一个信息

  • UID : 用户ID
  • PID : 进程ID
  • PPID : 该进程的父进程ID
  • C : CPU用于计算执行优先级的因子,数值越大表示进程是CPU密集型运算,执行优先级会降低;数值越小,表明进程是I/O密集型运算,执行优先级越高
  • STIME : 进程启动时间
  • TTY : 终端名称,一般是缩写
  • TIME : 进程占用CPU的总时间
  • CMD : 启动进程所用的命令和参数

我们通过管道符就可以看到sshd的父进程ID为1

终止进程

Windows上的终止进程就是任务管理器打开,右键结束任务,就可以把我们卡死的游戏给关掉啦。而Linux我们需要通过指令来终止进程,杀死这个进程

kill [选项] 进程号
killall 进程名称
-9 表示强迫进程立即停止

查看进程树

树形结构往往可以让我们更直观的查看信息

pstree [选项]
-p:显示进程的PID
-u:显示进程的所属用户

服务管理

服务本质还是一个进程,但是是在后台运行的,通常都会监听某一个端口,等待其他程序的请求,因此我们又称之为守护进程。

service管理指令

在centos7后,很多服务不再使用service,而是使用sysytemctl,我们先来看一下service还可以对哪些服务起作用

# 使用ls -l /etc/init.d/ 查看可以作用于哪些服务
[root@yellowstarEdu01 ~]# ls -l /etc/init.d/
总用量 40
-rw-r--r--. 1 root root 18281 8月  24 2018 functions
-rwxr-xr-x. 1 root root  4569 8月  24 2018 netconsole
-rwxr-xr-x. 1 root root  7923 8月  24 2018 network
-rw-r--r--. 1 root root  1160 10月 31 2018 README

我们就使用network这个服务来学习一下service指令,network是一个网络指令,通常情况下network是开启状态的

# service network status  查看当前网络状态
[root@yellowstarEdu01 ~]# service network status
已配置设备:
lo ens33
当前活跃设备:
lo ens33 virbr0
# service network stop  关闭网络(在虚拟系统演示,关闭网络之后远程连接将断开)
[root@yellowstarEdu01 ~]$ service network stop
Stopping network (via systemctl): 
# service network start  开启网络
[root@yellowstarEdu01 ~]$ service network start
Starting network (via systemctl):
# service network restart 重启网络

chkconfig指令

通过chkconfig命令,可以给服务的各个运行级别设置自启动/关闭

查看服务

自启动/关闭相当于开机启动或不启动,我们通过以下命令可以查看服务的状态

在network中我们可以看到在运行级别3,5的状态下都设置了开机启动网络服务

[root@yellowstarEdu01 ~]# chkconfig --list

注:该输出结果只显示 SysV 服务,并不包含
原生 systemd 服务。SysV 配置数据
可能被原生 systemd 配置覆盖。 

      要列出 systemd 服务,请执行 'systemctl list-unit-files'。
      查看在具体 target 启用的服务请执行
      'systemctl list-dependencies [target]'。

netconsole      0:关    1:关    2:关    3:关    4:关    5:关    6:关
network         0:关    1:关    2:开    3:开    4:开    5:开    6:关

设置开机是否启动

例如我们想对network服务,设置运行级别为3时,不开机启动网络服务,可以使用以下命令

注意:chkconfig重新设置服务自启动或关闭,需要重启虚拟机reboot命令

[root@yellowstarEdu01 ~]# chkconfig --level 3 network off
[root@yellowstarEdu01 ~]# chkconfig --list

注:该输出结果只显示 SysV 服务,并不包含
原生 systemd 服务。SysV 配置数据
可能被原生 systemd 配置覆盖。 

      要列出 systemd 服务,请执行 'systemctl list-unit-files'。
      查看在具体 target 启用的服务请执行
      'systemctl list-dependencies [target]'。

netconsole      0:关    1:关    2:关    3:关    4:关    5:关    6:关
network         0:关    1:关    2:开    3:关    4:开    5:开    6:关

systemctl管理指令

systemctl指令管理的服务在 /usr/lib/systemd/system查看

[root@yellowstarEdu01 ~]# ls -l  /usr/lib/systemd/system

查看服务的自启动状态,以防火墙举例

[root@yellowstarEdu01 ~]# systemctl list-unit-files | grep firewall
firewalld.service                             enabled 

开启、关闭防火墙

# systemctl disable firewalld 关闭防火墙开机启动
# systemctl enable firewalld 开启防火墙开启启动
[root@yellowstarEdu01 ~]# systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@yellowstarEdu01 ~]# systemctl list-unit-files | grep firewall
firewalld.service                             disabled

查看防火墙是否自启动

[root@yellowstarEdu01 ~]# systemctl is-enabled firewalld
disabled

firewall指令

在真正的生产环境中,我们不可能把防火墙关闭了,往往需要将防火墙打开,但是如果我们把防火墙打开,那么外部请求数据包就不能跟服务器监听端口进行通讯。

这时候我们需要打开指定的端口,例如80,22,8080等

# firewall-cmd --permanent --add-port=端口/协议		打开端口
# firewall-cmd --permanent --remove-port=端口/协议		关闭端口
[root@yellowstarEdu01 ~]# firewall-cmd --permanent --add-port=111/tcp
success
# firewall-cmd --reload 重新载入才能生效
[root@yellowstarEdu01 ~]# firewall-cmd --reload
success
# firewall-cmd --query-port=端口/协议	查看端口是否开放
[root@yellowstarEdu01 ~]# firewall-cmd --query-port=111/tcp
yes

这时候有小伙伴就要问了,怎么查看端口对应的协议呢?只需使用以下指令即可

看111端口最前面的proto就是协议

[root@yellowstarEdu01 ~]# netstat -nap | more
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:25672           0.0.0.0:*               LISTEN      7421/beam.smp       
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      1/systemd           
tcp        0      0 0.0.0.0:6000            0.0.0.0:*               LISTEN      7581/X              
tcp        0      0 0.0.0.0:4369            0.0.0.0:*               LISTEN      7992/epmd           
tcp        0      0 192.168.122.1:53        0.0.0.0:*               LISTEN      7927/dnsmasq        
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      7426/sshd           

动态监控系统

top命令,与ps命令类似,都用来显示正在执行的进程,区别是top可以在执行一段时间更新正在运行的进程

基本语法

# top [选项]
-d 秒数 :指定top命令每隔几秒更新一次,不指定默认为3秒
-i top不显示任何闲置或僵死进程
-p 通过指定监控进程ID来仅仅监控某个进程的状态

来看看top命令显示的一些信息

交互操作

P : 以CPU使用率排序,默认就是此项
M : 以内存使用率排序
N : 以PID排序
q : 退出top

# 监视特定用户
先输入u,再输入用户名
# 终止指定的进程
先输入k,在输入要结束的进程ID

监控网络状态

基本语法

netstat [选项]
-an # 按一定顺序排列输出
-p # 显示哪个进程在调用

查看服务名为sshd的服务的信息

netstat -anp | grep sshd

我们看倒数第二行,是root用户登录的进程并且是已连接,这里虚拟机中的22端口映射着我们主机的42701端口,只有两个台机子端口互相开放,才能建立连接。

如果我们退出root用户,这个进程不会立即回到监听状态,而是转为TIME_WAIT等待状态,持续几分钟,如果一直没有重新连接,就关闭该进程

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • centos下安装redis服务详细节介绍

    centos下安装redis服务详细节介绍

    这篇文章主要介绍了 centos安装redis 服务的资料,这里对安装步骤进行了详细的介绍,具有参考价值,有需要的小伙伴可以参考下
    2016-11-11
  • Centos7配置端口转发功能实践

    Centos7配置端口转发功能实践

    本文介绍了如何在阿里云服务器上配置端口转发,将外网的30306端口流量转发到内网的3306端口,主要步骤包括:放行端口、伪装IP和使用命令行进行端口转发
    2025-12-12
  • Linux NFS服务器安装与配置思路分析

    Linux NFS服务器安装与配置思路分析

    NFS 是Network File System的缩写,即网络文件系统,可以让不同的客户端挂载使用同一个目录,作为共享存储使用,这样可以保证不同的节点客户端数据一致性,在集群架构中经常用到.这篇文章主要介绍了Linux NFS服务器安装与配置思路,需要的朋友可以参考下
    2016-10-10
  • 一文教你如何自定义systemd开机启动脚本

    一文教你如何自定义systemd开机启动脚本

    systemd开机脚本是Linux系统不可或缺的组成部分,它负责协调和管理系统启动过程中的各项任务和服务,本文将详细为大家介绍如何自定义systemd开机启动脚本,通过本文你将能够深入了解Linux启动流程,并提升系统的效率和可靠性
    2023-07-07
  • Apache RocketMQ Docker 容器化部署方案

    Apache RocketMQ Docker 容器化部署方案

    本文将详细介绍如何通过Docker容器化方式部署Apache RocketMQ,包括环境准备、镜像拉取、容器部署、功能测试、生产环境优化及故障排查等内容,为用户提供一套完整的容器化部署方案,感兴趣的朋友跟随小编一起看看吧
    2025-12-12
  • 配置XManager5连接Linux图形化界面详解

    配置XManager5连接Linux图形化界面详解

    这篇文章主要介绍了配置XManager5连接Linux图形化界面详解,需要的朋友可以参考下
    2017-01-01
  • Ubuntu16.04 安装Teamviewer的教程详解

    Ubuntu16.04 安装Teamviewer的教程详解

    这篇文章主要介绍了Ubuntu16.04 安装Teamviewer教程,Teamviewer在linux下也可以进行安装,下面给出具体的安装步骤,需要的朋友可以参考下
    2018-07-07
  • Linux服务器Systemctl命令完全使用指南

    Linux服务器Systemctl命令完全使用指南

    这篇文章主要介绍了Linux服务器Systemctl命令完全使用指南,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2025-08-08
  • Ubuntu12.04建立内核树实现过程详解

    Ubuntu12.04建立内核树实现过程详解

    这篇文章主要介绍了Ubuntu12.04建立内核树实现过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-09-09
  • linux服务器后台设置小技巧

    linux服务器后台设置小技巧

    linux服务器实用技巧
    2008-04-04

最新评论