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 值
相关推荐
疯狂飙车的蜗牛25 分钟前
从零玩转CanMV-K230(4)-小核Linux驱动开发参考
linux·运维·驱动开发
远游客07133 小时前
centos stream 8下载安装遇到的坑
linux·服务器·centos
马甲是掉不了一点的<.<3 小时前
本地电脑使用命令行上传文件至远程服务器
linux·scp·cmd·远程文件上传
jingyu飞鸟3 小时前
centos-stream9系统安装docker
linux·docker·centos
超爱吃士力架3 小时前
邀请逻辑
java·linux·后端
cominglately6 小时前
centos单机部署seata
linux·运维·centos
魏 无羡6 小时前
linux CentOS系统上卸载docker
linux·kubernetes·centos
CircleMouse6 小时前
Centos7, 使用yum工具,出现 Could not resolve host: mirrorlist.centos.org
linux·运维·服务器·centos
木子Linux6 小时前
【Linux打怪升级记 | 问题01】安装Linux系统忘记设置时区怎么办?3个方法教你回到东八区
linux·运维·服务器·centos·云计算
mit6.8247 小时前
Ubuntu 系统下性能剖析工具: perf
linux·运维·ubuntu