linux - 关闭 linux 然后关闭电源的正确方法是什么?

标签 linux raspberry-pi shutdown

我在带有外部电源的 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/

相关文章:

c - Linux C - 实现程序可以 self 更新的能力

python - 如何在 Linux 上从 python 调用 Wine dll?

postgresql - 在 CLI 而不是 nano 中显示 psql 查询的结果集

regex - 如何使用ansible更改文件中的特定值

linux - 为什么在 Docker 中运行 "not a tty"时得到 "tty"?

c - 在 Windows 平台上以 C 编程语言在开始和结束时间之外运行脚本

java - Tomcat关闭时Spring Boot中Executor服务的关闭

c# - StreamWriter 在系统突然关闭时在文件末尾写入 NUL 字符

raspberry-pi - 在 RaspberryPi 上使用 arch linux 解析主机名

Python:文件读取器 int 和 if 子句