Linux中如何暂停一个运行中的进程?

在Linux系统中,暂停进程是常见的操作,主要用于临时释放系统资源、调试程序或管理多任务运行状态,暂停进程的本质是将其从运行状态切换至“停止状态”(Stopped),此时进程会暂停执行,但保留其内存和上下文信息,便于后续恢复,以下是Linux中暂停进程的详细方法及操作场景。

linux中如何暂停一个进程

交互式暂停:Ctrl+Z(发送SIGTSTP信号)

对于在前台运行的进程(如通过终端启动的命令),最快捷的暂停方式是使用终端快捷键Ctrl+Z,该组合键会向当前终端的前台进程发送SIGTSTP信号(Terminal Stop),请求进程暂停。

操作步骤

  1. 启动一个需要暂停的进程,例如运行sleep 1000(让进程休眠1000秒):
    sleep 1000

    此时终端会被该进程占用,无法输入新命令。

  2. 按下Ctrl+Z,终端会返回类似以下提示:
    [1]+  Stopped                 sleep 1000

    其中[1]是作业号(Job ID),Stopped表示进程已暂停。

特点

  • 仅适用于当前终端的前台进程;
  • 发送的SIGTSTP信号可被进程捕获并处理(进程可选择忽略该信号,但大多数常规进程会默认暂停);
  • 暂停后进程进入后台,成为“作业”,可通过jobs命令查看。

通过kill命令发送信号(SIGSTOP/SIGTSTP)

若需暂停后台进程或非当前终端的进程,可使用kill命令结合指定信号。kill命令通过进程ID(PID)精准控制目标进程,支持多种信号,其中SIGSTOP(信号编号:18/19)和SIGTSTP(信号编号:20/21)用于暂停进程。

发送SIGSTOP信号(强制暂停,不可忽略)

SIGSTOP是强制停止信号,进程无法忽略或捕获,相当于“硬暂停”。

linux中如何暂停一个进程

操作步骤

  • 先通过pspgrepjobs命令获取目标进程的PID或作业号,查看sleep 1000的进程ID:
    ps aux | grep sleep

    假设返回的PID为12345

  • 使用kill发送SIGSTOP信号:
    kill -STOP 12345

    或使用信号编号:

    kill -18 12345

    进程会立即暂停,终端可能无提示(若为后台进程),可通过ps查看进程状态变为T(Stopped)。

发送SIGTSTP信号(可交互暂停,类似Ctrl+Z)

SIGTSTPCtrl+Z效果相同,是“软暂停”,进程可选择忽略(但极少有进程会忽略)。

操作步骤

kill -TSTP 12345

或使用信号编号:

linux中如何暂停一个进程

kill -20 12345

特点

  • SIGSTOP强制且不可恢复(除非发送SIGCONT),SIGTSTP可被进程处理;
  • 需要目标进程的PID,可通过pgrep -f "进程名"快速获取(如pgrep -f sleep)。

批量暂停进程:pkill/killall

若需暂停所有同名进程(如暂停所有sleep进程),可使用pkillkillall命令,结合信号参数实现批量操作。

pkill(按进程名/用户/终端等匹配)

pkill -STOP -f sleep  # 暂停所有包含"sleep"的进程
pkill -STOP -u username  # 暂停指定用户的所有进程

killall(按进程名精确匹配)

killall -STOP sleep  # 暂停名为"sleep"的所有进程

注意:批量操作需谨慎,建议先用pgrepps确认目标进程列表,避免误操作。

暂停进程的管理与恢复

暂停后的进程可通过以下命令恢复或管理:

命令 作用 示例
jobs 查看所有后台作业(包括暂停的) jobs -l(显示PID和作业号)
fg %作业号 将暂停的作业调至前台运行 fg %1(恢复作业1)
bg %作业号 让暂停的作业在后台继续运行 bg %1(作业1后台运行)
kill -CONT PID 发送SIGCONT信号恢复进程 kill -CONT 12345(恢复PID为12345的进程)

注意事项

  1. 信号区别SIGSTOP不可被忽略,SIGTSTP可被忽略(但罕见);
  2. 权限问题:普通用户只能操作自己的进程,root用户可操作所有进程;
  3. 进程状态:暂停后进程状态为T(Stopped),恢复后变回R(运行)或S(睡眠);
  4. 资源占用:暂停的进程不占用CPU,但会保留内存和文件描述符,长时间暂停可能影响内存释放。

相关问答FAQs

Q1:暂停的进程会占用系统资源吗?
A:暂停的进程(状态为T)不占用CPU资源,但仍会保留内存空间和打开的文件描述符,如果长时间暂停,可通过kill -9强制终止进程(但会丢失未保存数据),或确保及时恢复以释放资源。

Q2:如何区分“暂停”和“终止”进程?
A:暂停(Stop)是临时中断进程执行,可通过SIGCONT信号或fg/bg命令恢复,进程状态为T;终止(Kill)是彻底结束进程,释放所有资源(内存、文件描述符等),无法恢复,进程状态为Z(僵尸进程,短暂存在)或直接消失,终止进程常用kill -9(强制终止)或kill -15(正常终止,允许进程清理资源)。

原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/24155.html

(0)
酷番叔酷番叔
上一篇 1小时前
下一篇 1小时前

相关推荐

  • proc/mtd能查看什么?

    在Linux系统中,MTD(Memory Technology Device)是用于管理闪存设备(如NOR/NAND Flash)的核心子系统,查看MTD设备信息对嵌入式开发、固件分析或系统维护至关重要,以下是几种专业可靠的查看方法:这是最直接的方法,系统会动态列出所有MTD分区信息:cat /proc/mtd……

    2025年7月17日
    3100
  • Linux如何直接运行Windows批处理文件?

    为什么无法直接执行?解释器差异Windows批处理依赖cmd.exe解释器,而Linux使用Bash、Zsh等Shell,命令不兼容dir(Windows) → ls(Linux)del(Windows) → rm(Linux)路径分隔符:\(Windows) vs (Linux)解决方案:4种实用方法方法1……

    2025年7月26日
    2800
  • Linux系统如何修改hosts文件?

    在Linux系统中,hosts文件是一个用于将域名映射到IP地址的本地文本文件,它相当于一个本地的DNS解析器,当用户在浏览器中输入域名时,系统会优先查询hosts文件中的映射关系,若存在则直接访问对应IP,若不存在再向DNS服务器请求,这种机制常用于本地开发环境配置、屏蔽广告网站、测试环境隔离等场景,本文将详……

    2025年8月24日
    2000
  • Linux如何拷贝文件到本地?

    在Linux系统中,将文件拷贝到本地是日常运维和开发中的常见操作,涵盖同一主机内的文件复制以及从远程主机下载文件到本地两种核心场景,不同场景下需根据文件大小、目录结构、网络环境等因素选择合适的方法,本文将详细解析各类拷贝命令的语法、参数及使用技巧,本地文件拷贝:基础命令与进阶用法同一主机内的文件拷贝主要依赖cp……

    2025年9月8日
    800
  • Linux守护进程卡死如何安全终结?

    定位后台程序的3种方法ps 命令 + 管道筛选ps aux | grep 程序名关键词 # 示例:ps aux | grep nginx输出解析:USER(所有者)、PID(进程ID)、%CPU(CPU占用)、COMMAND(命令路径)pstree 查看进程树pstree -p # 显示所有进程的树状结构,直观……

    2025年7月15日
    3500

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信