我在带有外部电源的 raspberrypi 板上运行 Linux raspberrypi 3.6.11+。电源“关闭”开关通过 GPIO 控制。
我想执行“shutdown -h -P now”,等待系统关闭(暂停),然后通过运行程序 (killpower) 关闭电源以切换适当的 gpio 引脚。我的主要目标是确保文件系统处于断电时不会损坏的状态。
我已经尝试利用运行级别 1 脚本 killproc 将 SIGTERM(和 SIGKILL)发送到每个正在运行的进程。我写了 killpower 来捕获 SIGTERM,等待 20 秒,然后发送 gpio powerkill 序列。我还将 killproc 脚本修改为 NOT SIGKILL 我的 killpower pid,即使它在 SIGTERM 超时后仍在运行。
当这不起作用时,我发现在 killproc 运行后,/init.d/halt SCRIPT 运行,它调用/sbin/halt。/sbin/halt 还使用 SIGKILL 杀死所有进程,所以我预计我的 killpower proc 在 20 秒结束之前被杀死。现在,我不知道这种方法将如何发挥作用。
我还看到 init 可以作用于 SIGPWR 信号(不推荐),但它可以执行 powerwait/powerfail。此时系统是否处于关机状态?我似乎无法找出这些程序应该实现什么。
我考虑过在 init.d 中安装另一个关闭脚本,但我对它应该“停止”在哪个运行级别(级别 1 或级别 0)感到困惑。
是否可以在/sbin/halt 作为关机命令的结果执行之前关闭电源?我是否正确认为一旦/sbin/halt 被执行,其他任何东西都不会运行?
最佳答案
当我远程登录时,我关闭 linux box 的方法是简单地使用“poweroff”命令。然后系统正常关闭并最终自行关闭——仅此而已,正是我想要的。
关于linux - 关闭 linux 然后关闭电源的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25553357/