You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Go中cgroups Freeze与Linux kill -STOP暂停单进程的区别是什么

cgroup Freeze/Thaw 与 kill -STOP/CONT 暂停进程的差异

哪怕目标cgroup内仅存在单个进程,两种暂停/恢复方式仍存在本质差异,核心区别如下:

  • 信号行为差异
    • kill -STOP本质是向指定PID发送SIGSTOP信号,该信号无法被进程捕获、忽略或阻塞,暂停状态下的进程仍可响应SIGKILL、SIGSEGV等致命信号,会直接退出,执行kill -CONT发送SIGCONT信号即可恢复进程运行。
    • cgroup的Freeze()是内核freezer子系统的原生能力,不会向进程发送任何信号,冻结期间所有发往进程的信号都会被内核暂存,哪怕是SIGKILL也不会被立刻处理,直到调用Thaw()解冻后才会统一递送信号。此时单独给进程发SIGCONT无法唤醒进程,必须通过cgroup的解冻接口操作。
  • 状态标识差异
    • 被SIGSTOP暂停的进程,通过ps等工具查询时状态会显示为T(stopped,暂停状态),符合常规的进程信号暂停标识。
    • 被cgroup冻结的进程,用户态工具查询到的进程状态不会标记为T,内核层面只是将进程移出调度队列,不再分配CPU时间片,进程本身无法感知自身被冻结,解冻后只会感知到时间出现跳变。
  • 作用范围差异
    • kill -STOP仅作用于指定的单个PID,若该进程在暂停期间fork出子进程,子进程会默认处于运行状态,不会被自动暂停。
    • Freeze()作用于整个cgroup,就算当前仅存在1个进程,后续新加入该cgroup、或者该进程fork出的属于同cgroup的子进程,都会被自动冻结,不会出现漏停的情况。

如果只是临时暂停单个已知PID的进程,两种方式都能达到暂停运行的效果,但如果涉及容器、进程组管理等场景,cgroup的冻结能力可靠性要远高于手动发信号的方式。

内容的提问来源于stack exchange,提问作者si yan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 13:36:05