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 值
相关推荐
友友马6 分钟前
『 Linux 』网络层 - IP协议(一)
linux·网络·tcp/ip
A.A呐2 小时前
【Linux第一章】Linux介绍与指令
linux
Gui林2 小时前
【GL004】Linux
linux
ö Constancy2 小时前
Linux 使用gdb调试core文件
linux·c语言·vim
tang_vincent2 小时前
linux下的spi开发与框架源码分析
linux
xiaozhiwise2 小时前
Linux ASLR
linux
wellnw2 小时前
[linux] linux c实现共享内存读写操作
linux·c语言
a_安徒生2 小时前
linux安装TDengine
linux·数据库·tdengine
追风赶月、2 小时前
【Linux】线程概念与线程控制
linux·运维·服务器
小字节,大梦想2 小时前
【Linux】重定向,dup
linux