暂时阻止linux关闭

11 linux dbus shutdown

我有一个备份脚本,每天在我的linux(Fedora 9)计算机上运行.如果在备份过程中计算机已关闭,则备份可能已损坏,因此我想编写一个小脚本,暂时禁用用户重启或关闭计算机的能力.

脚本没有必要是不可靠的,它只是让系统用户知道备份正在进行而且不应该关闭.我已经在DBus Free桌面电源管理规范中看到了Inhibit方法:http: //people.freedesktop.org/~hughsient/temp/power-management-spec-0.3.html 但是这只能防止系统空闲时关闭没有明确地在用户请求.

有没有一种简单的方法可以在C/Python/Perl或bash中执行此操作?

更新:为了澄清上面的问题,它是一台拥有多个用户的机器,但是通过插入的键盘/鼠标顺序使用它.我不是在寻找能够阻止我以root身份"劈砍"它的系统.但是当我选择从Gnome/GDM菜单关闭时,会提醒我(或其他用户)备份仍在运行的脚本

cor*_*yan 8

另一个入门解决方案:在关机期间,系统运行/etc/init.d/中的脚本(或者实际上是/etc/rc.*/中的脚本,但你明白了.)你可以创建一个该目录中用于检查备份状态的脚本,延迟关闭直到备份完成.或者更好的是,它可以优雅地中断备份.

超级用户可以解决此脚本(例如,使用/ sbin/halt),但是如果超级用户真正设置了这样做,则无法阻止超级用户执行任何操作.


Tim*_*ven 5

molly-guard可以防止意外关闭、重新启动等,直到满足所有必需的条件 - 条件可以自定义。

正如已经建议的,您也可以在关闭过程中执行备份操作。例如,请参见本页


bra*_*ter 1

与其说是完整的解决方案,不如说是入门,您可以将 shutdown 命令别名化,然后使用类似的脚本

#!/bin/sh
ps -ef|grep backupprocess|grep -v grep > /dev/null
if [ "$?" -eq 0 ]; then
 echo Backup in progress: aborted shutdown
 exit 0
else
 echo Backup not in progress: shutting down
 shutdown-alias -h now
fi
Run Code Online (Sandbox Code Playgroud)

作为 shutdown 保存在用户路径中。我预计会有一些变化,具体取决于您的用户如何调用关闭(窗口管理器图标/命令行),并且可能也针对不同的发行版。

  • 这并不总是有效,因为在许多情况下直接调用 shutdown,即 /sbin/shutdown (2认同)