如何使进程仅通过 SIGHUP 或 SIGKILL“终止”?

如何使进程仅通过 SIGHUP 或 SIGKILL“终止”?

我写了一个脚本,用来终止卡住的进程。首先,它会尝试最弱的 SIGTERM,如果不起作用,它会尝试 SIGHUP,如果这也没有用,它会发出 SIGKILL。现在我想试试这个脚本是否真的有效。

我怎样才能使进程卡住或堵塞,以便只能通过 HUP 或 KILL 信号来停止它?

答案1

可能最简单的方法是编写一个最小的 bash 脚本,使用内置函数trap指定自定义信号处理程序:

#!/bin/bash

function mysighandler {
  printf 'ignoring TERM signal\n'
}

trap mysighandler SIGTERM

while :
do
  printf 'Running. . .\n'
  sleep 2
done

您可以将处理程序设置为空字符串,这将导致信号被默默忽略 - 但创建一个最小处理程序可以让您确认它已被拦截。

或者,编写一个使用 API 的小型 C 程序signal- 参见man 2 signal

相关内容