linux挂起是linux系统中常见的状态描述,根据作用对象不同分为系统挂起和进程挂起两类,二者核心都是让当前运行的对象暂停工作,等待后续触发恢复运行。

系统层面的linux挂起
系统挂起指的是将linux整机的运行状态保存到内存或磁盘后,让硬件进入低功耗模式,此时系统会暂停所有用户操作和后台任务,屏幕关闭,风扇停转,仅保留少量供电维持状态数据。
系统挂起通常分为两种模式:
- 挂起到内存:状态数据保存在内存中,恢复速度快,但断电后数据会丢失,对应linux的suspend模式
- 挂起到磁盘:状态数据写入磁盘交换分区,断电后数据不会丢失,恢复速度稍慢,对应linux的hibernate模式
普通用户可以通过系统设置或者命令行触发系统挂起,命令行示例如下:
# 挂起到内存 systemctl suspend # 挂起到磁盘 systemctl hibernate
进程层面的linux挂起
进程挂起指的是单个运行中的进程暂停执行,不再占用CPU资源,但进程本身仍然存在,相关资源没有被释放,等待后续信号恢复运行。
进程挂起通常通过信号触发,常见的相关信号如下:
| 信号编号 | 信号名称 | 作用 |
|---|---|---|
| 19 | SIGSTOP | 强制挂起进程,进程无法忽略该信号 |
| 20 | SIGTSTP | 终端触发挂起进程,比如按下Ctrl+Z组合键 |
| 18 | SIGCONT | 恢复被挂起的进程继续运行 |
我们可以通过ps命令查看进程状态,被挂起的进程状态会显示为T,示例如下:
# 查看所有进程状态,过滤状态为T的挂起进程 ps aux | grep -E 'T$'
进程挂起后如果需要恢复,可以发送SIGCONT信号,示例:
# 假设挂起进程的PID是1234,恢复该进程 kill -18 1234 # 或者使用SIGCONT名称发送信号 kill -SIGCONT 1234
两种挂起的区别
系统挂起影响整个linux主机,所有进程都会暂停,恢复后所有进程回到挂起前的状态;进程挂起仅影响单个指定进程,其他进程正常运行,恢复后仅该进程继续执行。
日常使用中如果需要临时离开电脑,可以选择系统挂起节省电量;如果需要暂停某个耗时任务后续再处理,可以选择挂起对应进程,避免任务中断后重新执行。
常见疑问解答
挂起的进程会占用内存吗
会,进程挂起只是暂停CPU调度,进程的代码、数据、打开的文件等资源仍然保留在内存中,不会释放。
系统挂起后网络会断开吗
挂起到内存模式下,网卡会进入低功耗状态,网络连接通常会断开,恢复后需要重新建立连接;挂起到磁盘模式下,恢复后网络配置会保留,但连接状态也需要重新确认。
注意:部分linux发行版的桌面环境和命令行工具的挂起相关命令可能存在差异,操作时建议先查看对应命令的手册确认参数。