挂起进程(信号和方法)

我在修改 RSTunnel 脚本,改写为 CTunnel 时,需要调试脚本,模拟 SSH隧道 冻结卡死的情况。这需要短暂使得运行中的 ssh 进程冻结(没有数据传输),所以考虑使用shell命令来实现进程挂起。

这个进程 suspendresume 是通过发给进程的信号来实现的:

  • 温和挂起进程(进程可以忽略这个信号,进程可以优雅处理完手头工作后再挂起): SIGTSTP

  • 强制挂起进行(进程不能忽略信号,立即挂起): SIGSTOP

  • 恢复运行: SIGCONT

简单来说,就是执行类似如下命令:

kill 发送信号给进程
kill -SIGTSTP <pid>
kill -SIGSTOP <pid>
kill -SIGCONT <pid>

# 注意,信号参数也可以省略 ``SIG`` 关键字,即 ``-TSTP`` / ``-STOP`` / ``-CONT``

参考