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 值
相关推荐
A小辣椒8 小时前
TShark:基础知识
linux
AlfredZhao10 小时前
OCI 明明分配了 200G 系统盘,为什么 df 只看到 30G?
linux·oci
AlfredZhao1 天前
vi 删除指定范围的行,不用再反复按 dd
linux·vi
用户9718356334661 天前
银河麒麟 KY10 申威(SW64) 安装 nginx-1.16.1-2.p01.ky10.sw_64.rpm 详细步骤
linux
猪脚踏浪1 天前
linux 拷贝文件或目录到指定的位置
linux
摇滚侠2 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
bush42 天前
嵌入式linux学习记录十四、术语
linux·嵌入式
载数而行5202 天前
Linux 11 动态监控指令top
linux
不会C语言的男孩2 天前
Linux 系统编程 · 第 8 章:进程基础
linux·c语言
古城小栈2 天前
Unix 与 Linux 异同小叙
linux·服务器·unix