监控和管理Linux进程

什么是进程

进程的定义

进程 process 是正在运行的程序,包括:
- 分配的内存地址空间
- 安全属性,包括所有权和特权
- 一个或多个线程
- 进程状态
进程的环境 包括:
- 本地和全局变量
- 当前调度上下文,
- 分配的系统资源,如文件和网络端口
当前(父)进程复制自己的地址空间 (fork) 来创建一个新的(子)进程 结构,每个进程具有 PID
在 RHEL8 中,1号进程是 systemd
进程生命周期如下:
通过 fork 例程,子进程继承安全性身份、过去和当前的文件描述符、端口和资源特权、环境变量, 以及程序代码。随后,子进程可能 exec 其自 己的程序代码。通常,父进程在子进程运行期间处于睡眠状态,设置一个在子进程完成时发出信号的请求(wait)
在退出时,子进程已经关闭或丢弃了其资源和环境。唯一剩下的资源称为僵停 ,是进程表中的一个条目。父进程在子进程退出时收到信号而被唤 醒,清理子条目的进程表,由此释放子进程的最后一个资源。然后,父进程继续执行自己的程序代码

描述进程状态

多任务操作系统中,每个 CPU 同一时间处理一个进程,进程运行时具有不同状态

 Linux 进程的状态:

 

列出进程

ps 命令 用于列出当前进程,包括:
- 运行进程的用户 UID
- 进程 PID
- CPU 在其上运行时间
- 分配的内存量
- 进程的 stdout 位置,称为控制终端
注意:ps -aux(UNIX 格式) 不等于 ps aux(BSD 格式)

 ps 的常用选项是 aux、-ef、lax(长列表)

  1. ps aux:这是一个常见的用法,用于以完整的格式显示所有用户的进程。其中,a 表示显示所有用户的进程,u 表示显示详细的进程信息,x 表示显示没有控制终端的进程。

  2. ps -ef:与 ps aux 类似,也会显示所有用户的进程信息。其中,-e 表示显示所有进程,-f 表示显示详细的进程信息。

  3. ps lax:这个选项稍微不太常见,但在某些系统上也可用。其中,l 表示以长格式 (long format) 显示进程信息,a 表示显示所有用户的进程,x 表示显示没有控制终端的进程。

控制作业

描述作业和会话(job and session)

job control 是 shell 的一种功能,允许单个 shell 实例运行和管理多个命令
一个终端同一时间只能对一个作业发送信号和读取信息,这个作业进程成 为该终端的前台进程
可以将作业进程放入后台,可以运行也可以暂停
每个 terminal 就是一个会话,里面可能含有一个前台进程和任意数量的后 台进程。一个作业只能属于一个会话
ps 输出中有些进程由系统启动,而不是由 shell 提示符启动,这种进程没 有 terminal,无法切换到前台,在 ps 中显示为?

在后台运行作业

在命令后加 & 即可 在后台启动 ,shell 继续显示提示符

jobs 命令可以显示作业列表 fg %jobid(作业标识符) 可将后台作业转至前台

 ctrl+z 可将前台进程放到后台,并暂停运行

 ps j 命令显示作业信息,如果进程状态是 T,表示暂停

bg %jobid 可以在后台继续运行作业

 中断进程

使用信号控制进程

signals 指的是 发给进程的软件中断 ,signals 向执行中的程序报告事件, 生成 signals 的事件可以使错误或者外部事件
 以下是一些常见的 signals,可以被管理员使用:
一般 signals 分为三种类型:
- Term 立即关闭
- Core 保存程序的内存映像(核心转储),然后终止
- Stop 程序暂停运行,等待恢复运行
通过键盘发送 signals 的命令:
- 暂停 Ctrl-z ----stop 终止或等待恢复
- 中断 Ctrl-c ----term 立即终止并退出
- 核心转储 Ctrl-\ ---- core 程序保存内存映像,然后终止
- signal 可以通过名称(如 -HUP 或 -SIGHUP)或编号(如-1 或 -9)指定
- 使用 kill 命令来向进程发送 signals:(注意 kill 是向 PID 发送signals)

 

使用 kill 命令来向进程发送 signals :
- kill 命令可以向进程发送任何 signals
- kill -l 查看可以发生的 signals
- kill -signal
使用 killall 命令向多个进程发送 signals:(killall 可以匹配命令名称、特定用户的进程或系统的所有进程):

使用 pkill 可以向一个或多个符合选择条件的命令、UID 、 GID、子进程、 terminal 发送 signals: 

以管理员身份注销用户

w 命令可以显示当前登录系统的用户:
其中 TTY 列显示用户的位置,pts/ 表示图形化终端,tty 表示文字界面终端
所有用戶登录会话都与某个终端设备 (TTY) 相关联

 

 

pkill -SIGKILL –u username 会强制中断某一用户的所有进程
注意:SIGKILL 常被滥用,无法挽救,太致命,而且容易不释放资源,所 以建议还是先 SIGTERM(15),然后尝试SIGINT (2) ,实在关不掉再SIGKILL(9)

可以借助父进程和子进程关系,进行选择性进程终止 

监控进程活动

解读 load average

uptime 命令可以显示当前 load average(负载平均值), lscpu 可以显示 cpu 数量。
将 load average 除以 cpu 数量,如果负载接近 1,表示 cpu 负载非常高

 

实时进程监控

top 命令默认每隔 5 秒刷新动态负载
top 还能输出:PID、进程所有者 USER、虚拟内存 VIRT、物理内存 RSS、 进程状态、CPU 时间 TIME(自启动以来总处理时间)、进程命令名称COMMAND

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值