如何在会话结束时运行 shell 脚本?

如何在会话结束时运行 shell 脚本?

在一个上一个问题,我找到了如何关闭全部通过以下方式启动正在运行的虚拟机实例流浪汉。我想在退出当前为 Cinnamon 的桌面管理器时调用该脚本。

有些人指出了另一个类似的问题,但我对所选答案的理解不够,无法解决我的问题并付诸行动。下面的评论指出start on stopping lightdm。这听起来就像我在寻找的东西。那就是当我退出桌面管理器(start on stopping lightdm)时,如何运行脚本来停止所有虚拟机(称为:stop-vagrant.sh)?

答案1

你需要做的是创建一个新贵工作. 假设您的停止虚拟机的脚本可在 处获得/some/path/vagrant-stop.sh

根据虚拟机的具体性质(它们是仅在您登录到 GUI 时运行,还是在系统启动时运行等),您可以使用系统作业或会话作业。对于虚拟机仅在您登录到 GUI 时运行的情况,您可以使用会话作业,我将在此处介绍一个简单的示例:

~/.config/upstart创建一个带有扩展名的文件.conf(使用您最喜欢的编辑器):

vim ~/.config/upstart/stop-vms.conf

内容如下:

description "Give your task a description"
start on session-end

task

exec /some/path/vagrant-stop.sh

运行initctl check-config看看是否有错误。

现在,你可以使用以下命令停止虚拟机(请原谅我的措辞):

start stop-vms

当您注销时,Upstart 将自动运行此操作。

相关内容