Linux“shutdown”命令是否允许一个参数来确定发送SIGTERM和SIGKILL之间的暂停时间?

Linux“shutdown”命令是否允许一个参数来确定发送SIGTERM和SIGKILL之间的暂停时间?

手册页似乎显示没有。Fedora 上有 /etc/rc.d/init.d/halt。它里面有一个硬编码的暂停,但一定有比更改该脚本更好的方法。任何帮助都将不胜感激。

答案1

我的系统上的手册页有:

-t sec Tell  init(8)  to  wait sec seconds between sending
processes the warning and  the kill signal, before changing 
to another runlevel.

(这可能是一个更适合 serverfault 的问题)

答案2

为了在 SIGTERM 和 SIGKILL 之间设置特定的延迟,您可以以 root 身份在脚本中指定三个命令

kill -SIGTERM -1
sleep 20
kill -SIGKILL -1

  • 向所有进程发送 SIGTERM(除了 1 个),
  • 等待 20 秒,然后
  • 发送-9信号立即终止剩余进程,

它会杀死你自己的进程、你的shell解释器...
开发一个脚本(例如用Perl)来列出所有进程,然后只杀死那些不会损害你自己脚本的进程,并启动它nohup以将它附加到所有进程的父进程1,就可以完成这项工作。

shutdown另一个解决方案是下载(或)的源代码halt并查看其工作原理 - 在发送两个信号之间添加固定或可选的延迟应该不会太难。

相关内容