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)
酷番叔酷番叔
上一篇 2025年9月16日 18:22
下一篇 2025年9月16日 18:36

相关推荐

  • 如何制作linux安装镜像

    下载Linux系统ISO镜像文件,用工具如Rufus等将其写入U盘等存储设备

    2025年8月9日
    12600
  • Linux jobs异常占用资源怎么办?

    查看当前Jobs停止前需确认任务ID:jobs -l输出示例:[1] + 10234 Running ./long_script.sh &[2] – 10256 Stopped vim config.conf[1]:任务编号(Job ID)10234:进程ID(PID)Running/Stopped:任……

    2025年7月29日
    15000
  • linux中如何编译c程序

    Linux 中,可使用 gcc 编译 C 程序,`gcc -o output_file source_file.

    2025年8月9日
    13000
  • Linux系统中如何查看网络管理员的详细配置信息?

    在Linux系统中,查看和管理网络信息是系统管理员和开发者的日常任务之一,虽然“网管”一词通常指网络管理员,但在实际操作中,用户可能需要查看网络接口状态、路由配置、连接信息等与网络管理相关的数据,Linux提供了丰富的命令行工具来帮助用户全面掌握网络状态,以下将详细介绍常用的查看方法及其应用场景,查看网络接口信……

    2025年9月22日
    12400
  • Linux系统如何开启DNS服务?

    在Linux系统中,DNS(域名系统)配置是网络通信的基础,它负责将人类可读的域名(如www.example.com)转换为机器可识别的IP地址,正确配置DNS不仅能确保网络连接正常,还能优化访问速度、提升安全性,本文将详细介绍Linux系统中查看、修改及排查DNS配置的多种方法,涵盖命令行工具、配置文件操作及……

    2025年8月27日
    14000

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信