在注销/关机时运行与用户交互的脚本?

在注销/关机时运行与用户交互的脚本?

我想在关机时运行一个脚本,中断注销过程并弹出一个带有 的窗口zenity。我的目标是自动文件系统检查使用 lightdm。如果手动运行检查脚本,安装旧的 *.deb 文件后,它似乎可以与 12.04 配合使用。为了使用它,它应该在注销时自动运行并询问用户是否要在关机时检查光盘。

如果使用具有完整路径的 bash 文件(我无法直接将命令放在那里),session-cleanup-script文件中的选项似乎可以工作。但是如果我按下关机,就没有时间让用户选择。/etc/lightdm/lightdm.conf

还有其他方法可以解决这个问题吗?

编辑:似乎 AutoFsck 还存在其他问题。会话清理脚本可以运行,但 AutoFsck 的检查命令却无法运行不是跑步。

答案1

我相信您的关机/断电问题(或多或少)在这里得到了解答:

当查看那里提供的答案时,我想调整/阐述/总结你可能需要两者,使用会话清理脚本,这样X 就不会在你响应和运行作业之前死机,以及一个新的、较小的脚本,其/etc/init.d/运行级别足够高以“阻止”关闭,直到你的会话清理脚本调用的 AutoFsck 脚本完成。

因此:

  1. 添加到 session-cleanup-script 设置一个标志,通过 ' touch /etc/noreboot' (或类似)由 AutoFsck 调用脚本清除(即,当回答否时删除 /etc/noreboot 文件,或者,如果回答是,则仅在 AutoFsck 完成后删除)

  2. 您的新/etc/init.d脚本必须检查 /etc/noreboot 是否存在,如果存在,则每隔一两秒在 while 循环中再次检查一次,直到文件被删除。一旦/etc/noreboot不存在,脚本就可以完成并允许其余的关机过程继续。同样,这里的关键是确保 init.d 脚本在 lightdm 关闭或任何其他 X 关闭运行之前运行。

由于在 init.d 中的检查脚本运行时 X 应该仍在运行/etc/noreboot,因此您还可以向屏幕发送一条 X 消息,表示关机被阻止,正在等待文件删除。如果/etc/noreboot由于某种原因文件未清除,导致系统无法正常关机,这条小消息可能会派上用场。

相关内容