0715_Linux基础(9)

240 阅读4分钟

中断进程

信号可以是错误或者外部的事件发送出来,通过发送指定的信号,可以向执行中的程序报告事件,这样就可以触发特定的动作。

基本信号控制进程

信号编号短名称定义用途
1HUP挂起用于报告终端控制进程的终止,也用于请求进程重新初始化(重新加载配置)而不终止。
2INT键盘中断导致程序终止,可以被拦截或处理, 可通过 Ctrl + c 发送
3QUIT键盘退出与 SIGINT (就是 INT 啦) 相似;在终止时添加进程转储。可通过按 Ctrl + \ 发送
9KILL中断立即终止程序,无法被拦截或处理
15 (默认)TERM终止但和 SIGKILL (就是 KILL 啦)不同,可以被拦截和处理,允许自我清理
18CONT继续发送至进程,使其恢复(若之前是停止状态),无法被拦截,始终会恢复进程
19STOP停止暂停进程,无法被拦截或处理
20TSTOP键盘停止与 SIGSTOP (就是 STOP 啦)不同,可以被拦截和处理,可通过 Ctrl + z 发送

使用 kill 命令,根据 PID 编号就可以向进程发送信号,虽然是叫做 kill,但是可以发送很多种信号哦。


# 查看可发送的信号

kill -l


# 查看进程

ps aux

# 假设有一个 222 的进程 使用默认参数,进行终止

kill 222

# 通过传递信号参数的方式,进行终止

kill -SIGTERM 222

# 通过信号的对应编号参数,进行终止
kill -15 222


# 向多个 命名名称一样的进程发送信号
# killall 命令

killall control

# 向多个符合条件的进程发信号
# 比如关掉某个用户的所有进程

pkill -U user1

以管理员身份终止其他用户的会话

出于管理的原因,可能会需要注销其他的用户,比如某个用户进行安全违规行为、用户过度占用资源、用户的系统突然不响应等等。这些情况下,就需要以管理员的身份来终止会话。

使用 w 命令可以列出用户登录和当前运行的进程。如果设备名称的格式为 pts/N, 说明这是一个与图形终端窗口或远程登录会话相关联的伪终端。如果格式为 ttyN,则说明用户位于一个系统控制台、替代控制台或其他直接连接的终端设备上。

使用 pgrep 可以先确定要中断的 PID 编号,具有 和 pkill 相同的选项,只是他只是练出进程而不是中断进程。

# 假设当前是 root 用户
# 假设有一个用户 bob

pgrep -l -u bob


# 如果想要查看 父子进程之间的关系,需要 pstree

pstree -p bob


# 然后 pkill 来终止 bob 用户

pkill -SIGKILL -u bob


监控进程活动

负载平均值是 Linux 内核提供的一种度量方式,它可以简单地表示一段时间内感知的系统负载。内核会每五秒收集一次当前的负载数,通过汇总这些数值,可以得到最近 1 分钟、5 分钟和 15 分钟内的指数移动平均值。

负载数基本上是根据准备运行的进程数(进程状态 R ) 和等待 I/O 完成的进程数 (进程状态为 D ) 而得到的。

使用 uptime 命令是显示当前负载平均值的一种方法。它可显示当前时间、计算机启动时长、运用的用户会话数以及当前的负载平均值(1、5、15 分钟)

使用 lscpu 命令可以查看系统有多少 CPU。

实时进程监控。

top 命令可以动态的显示系统进程,会根据配置的间隔持续刷新。配置可以保存到本地文件,变为永久。默认的输出项有很多: 进程 PID 、用户 USER、虚拟内存 VIRT、 常驻内存 RES、进程状态 S、 CPU 时间。

top 命令的基本操作

1.png