每次我关闭或重新启动我的笔记本电脑(Ubuntu 14.04)时,我都想运行一个脚本来检查我是否将我的最新代码推送到我的远程 git 存储库。如果我忘记了,它会打开一个终端,要求用户输入提交消息并推送更改。我已经让脚本工作了。
现在我正在寻找一种方法来让这个脚本在我关机或重启时自动运行,但在 GUI 退出之前。
到目前为止,我的方法是使用 System V Init(是的,我知道它有点过时了):
我将带有 LSB 标头的初始化脚本复制到 /etc/init.d:
sudo cp ~/git_checker /etc/init.d/
,更改权限:
sudo chmod a+x /etc/init.d/git_checker
并配置执行场景:
sudo update-rc.d /etc/init.d/git_checker defaults
当我使用 测试此脚本时sudo service git_checker start
,出现错误:“无法解析参数:无法打开显示:”
阅读它,我发现,init 脚本不应该用于打开终端(像这样:)
su user -c 'x-terminal-emulator -e /home/user/git_check.sh'
,因为在执行 init 脚本时不能保证 X 服务器正在运行。
所以初始化脚本似乎是错误的方式。还有其他方法吗?也许与暴发户或systemd?
在系统启动时运行脚本的情况下,我可以简单地将它放在启动应用程序中。是否存在类似的东西,例如关闭应用程序?
我前段时间创建了一个小型监控脚本,一旦脚本检测到用户尝试关闭计算机,它将调用中断函数。对于您的特定情况,它需要的小修改是取消关闭操作,运行脚本,然后调用关闭。
这个脚本当然必须作为启动应用程序的一部分添加,或者您可以手动为其创建 .desktop 文件
注意:此脚本仅适用于 GUI,因此如果用户发出命令
sudo shutdown -P now
,它将不起作用。您还需要shutdown
通过另一个脚本使用pgrep shutdown
或将另一个功能集成到脚本中来监视命令。例如,在我上面的脚本中,你想添加这个函数
main()
然后像这样调用那个函数