Linux监控和管理进程

在Windows中如果一个程序出现了以异常,我们通常会使用任务管理器来进行调试管理操作

在Linux中也有类似的方式


进程生命周期

当一个程序安装好后,在磁盘中占据空间

当这个程序被调用时,就代表着进入进程

进程拥有生命周期,可以分为以下几个阶段状态:

  1. 创建(Creation):当一个程序被执行时,操作系统会创建一个新的进程。这个新进程被分配一个唯一的进程ID,并在进程表中被注册
  2. 就绪(Ready):在创建后,进程进入就绪状态,等待CPU调度以运行。多个就绪进程可能会争夺CPU资源
  3. 运行(Running):当一个就绪进程获得CPU时间片后,它就变成了运行状态。在运行状态下,进程执行其指令,直到它主动放弃CPU或被其他高优先级进程抢占
  4. 阻塞(Blocked):一个运行中的进程可能会因为等待某种事件的发生而暂时停止执行。例如,等待用户输入、等待磁盘IO等。在这种情况下,进程进入阻塞状态,并停止使用CPU
  5. 终止(Termination):进程可以通过以下方式终止:正常退出、异常退出(例如因为错误操作导致程序崩溃)、被其他进程结束、被操作系统终止等。进程终止后,它的资源会被释放,包括内存空间、打开的文件等

查看进程

我们可以通过ps命令来查看进程的信息(静态)
ps aux | grep httpd
也可以使用top命令来查看进程的实时信息(动态)

这种情况下默认每5秒更新一次进程信息

在top所显示的信息栏中,我们可以使用以下按键来做不同的事:

  • M 按内存使用情况进行排序
  • P 按CPU使用情况进行排序
  • h 显示帮助
  • F 选择感兴趣的进程,空格选择或取消

作业控制

生产当中,我们往往只有一个终端

在这种情况下,当一个命令一直执行不完,我们又不想等待

我们可以把这个进程放在后台进行

使用CMD &命令

我们也可以Ctrl + z将其放在后台并且停止运行

一般管理后台进程,有以下几种方式:

  • jobs 列举
  • bg 后台恢复运行
  • fg 前台恢复运行
  • kill %N 发送结束信号(N为进程id)

下面我们使用一个例子来加深这一块的理解:

为了可以让大家简单的理解,我们使用ping命令来持续查看网络信息

我们可以通过ifconfig命令来查看当前所有接口的信息

然后在其中找到我们想要监视的ip

一般来说,虚拟机访问外部网络的接口是ens类型

访问内部网络的接口是br或者virbr类型

但我们一般会使用网络接口lo的IP地址127.0.0.1来进行监视

我们在这里输入了ping 127.0.0.1命令来实时监控该ip的信息

可以发现一直在实时更新

此时我们可以使用'Ctrl + z'组合键将其停止运行,并放在后台

可以看到后台显示id为1的进程此时为Stopped状态

我们也可以开启多个终端,通过使用tty命令查看当前终端号的方式,来进行输出重定向

实现将信息输出到另一个终端

首先我们使用tty命令查看当前终端号,为/dev/pts/1

随后我们在一个新的终端上输入ping 127.0.0.1 > /dev/pts/1命令

将信息输出重定向到终端1上

效果如上图所示

此时我们使用组合键Ctrl + z可以暂停右边终端的信息输出


终止进程

对进程的操作,我们可以通过发送不同的信号实现

信号来源:

  • 外部信号 如Ctrl + C终止
  • 通过kill等命令向进程发送信号
  • 程序错误,如非法访问内存

而一般我们会使用kill + 信号名称或号码来使用

  1. SIGHUP (1) - 挂起信号,通常用于告诉进程重新加载配置文件
  2. SIGINT (2) - 中断信号,通常来源于用户输入,例如按Ctrl+C
  3. SIGQUIT (3) - 退出信号,通常来源于用户输入,例如按Ctrl+D,它允许核心转储
  4. SIGKILL (9) - 强行杀死信号,用于立即结束进程。不能被捕获或忽略
  5. SIGTERM (15) - 终止信号,它是默认信号,用于请求程序正常退出
  6. SIGSTOP (17,19,23) - 停止信号,用于暂停一个进程的执行。不是所有系统都使用相同的号码

监控活动进程

对于活动进程而言,我们有一个叫做活动优先级的概念,默认优先级为0
优先级的作用是给予进程一个先后执行的顺序

我们通过修改程序优先级来更改执行顺序
nice值便是决定优先级的数值

nice 值的范围是-20 到19,默认为0
nice越小优先级越高

我们可以通过修改nice值来更改优先级

  • 查看 nice 值
    使用ps命令
    ps axo pid,comm,nice
  • 设定nice值
    nice 命令
    以指定nice值运行新进程
    nice -n VALUE CMD
  • renice 命令
    以新指定的 nice值重新运行进程
    renice -n VALUE PID
    只有 root 用户可以调高进程 nice 值
相关推荐
共享家95271 小时前
深入剖析Linux常用命令,助力高效操作
linux·运维·服务器
Zfox_1 小时前
【C++项目】从零实现RPC框架「四」:业务层实现与项目使用
linux·开发语言·c++·rpc·项目
吃旺旺雪饼的小男孩2 小时前
Ubuntu 22.04 安装和运行 EDK2 超详细教程
linux·运维·ubuntu
IT小馋猫2 小时前
Linux 企业项目服务器组建(附脚本)
linux·服务器·网络
阿政一号2 小时前
Linux进程间通信:【目的】【管道】【匿名管道】【命名管道】【System V 共享内存】
linux·运维·服务器·进程间通信
又过一个秋2 小时前
【sylar-webserver】7 定时器模块
linux·c++
啊哦1113 小时前
配置防火墙和SELinux(1)
linux·服务器·网络
唐青枫3 小时前
Linux 换行符的使用详解
linux
A charmer3 小时前
【Linux】文件系统知识梳理:从磁盘硬件到文件管理
linux·运维·服务器
Cynthia的梦3 小时前
Linux学习-Linux进程间通信(IPC)聊天程序实践指南
linux·运维·学习