手册页似乎显示没有。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
并查看其工作原理 - 在发送两个信号之间添加固定或可选的延迟应该不会太难。