在 Ubuntu 关机前执行脚本

在 Ubuntu 关机前执行脚本

当我关闭计算机时,我想显示一些我离开办公室之前必须要完成的待办任务。

我有一个本地应用程序来管理这些任务,所以基本上我只想运行一个命令,然后在终止执行的应用程序后关闭。

我已经尝试过这些选项:

/etc/gdm/PostSession/Default

这仅当我选择“注销”选项而不是“关机”时才有效。

/etc/rc0.d/K01mycustomscript

X 被杀死后执行脚本。

$HOME/.bash_logout

这看上去什么也没做。

./app-to-run && sudo shutdown -h now

我不喜欢这个,原因有二:它提示输入 sudo 密码,而且我无法使用笔记本电脑关机按钮。

我正在使用 Ubuntu 10.04。

答案1

您可以在 /etc/init.d/ 中创建一个 init 脚本,然后使用 chkconfig 配置您想要的运行级别。我从来没有做过你想要的事情,但我会从这条路线开始。

答案2

  • /etc/rc0.d/K01mycustomscript可能需要/etc/rc0.d/S01mycustomscript
  • 确保它是可执行的(chmod 755 /etc/rc0.d/K01mycustomscriptchmod 755 /etc/rc0.d/S01mycustomscript
  • 尝试一些日志记录:将行添加logger 'mycustomscript START'到脚本的开头,并将其添加logger 'mycustomscript END'到结尾,关闭,然后在其中查找日志消息/var/log/messages
  • 请注意,惯例是在 中创建一个启动/停止脚本/etc/init.d/,然后从适当的 /etc/rc*.d 目录创建到该脚本的符号链接,或者使用像chkconfig或 这样的工具update-rc.d来维护符号链接(请参阅“Init”维基百科页面)
  • 看到这个类似的问题

答案3

退房/etc/rc0.d/README- 上面说

The scripts in this directory are executed once when entering
runlevel 0.

The scripts are all symbolic links whose targets are located in
/etc/init.d/ .

Generally it is not necessary to alter the scripts in this directory.
Their purpose is to stop all services and to make the system ready
for shutdown.

您需要创建一个脚本/etc/init.d,然后将它们符号链接起来以/etc/rc0.d/使脚本在关机时运行。

答案4

/etc/gdm/PostSession/Default 方式有效:

你必须“修复” gdm (或在我的情况下是 mdm) upstart skript:

/etc/init/mdm.conf

第 15 行:在运行级别 [016] 停止

到:

启动 rc 运行级别 [016] 时停止

相关内容