Rick Asked: 2014-10-18 08:27:06 +0800 CST2014-10-18 08:27:06 +0800 CST 2014-10-18 08:27:06 +0800 CST 如何在会话结束时运行 shell 脚本?[复制] 772 在上一个问题中,我发现了如何关闭所有通过vagrant启动的正在运行的 VM 实例。我想在退出当前为 Cinnamon 的桌面管理器时调用该脚本。 有些人指出了另一个类似的问题,但我对所选答案的理解程度不足以解决我的问题并将任何事情付诸行动。下面的评论指向start on stopping lightdm。这听起来像我要找的。那就是当我退出桌面管理器 ( ) 时如何运行脚本来停止所有 VM(称为:stop-vagrant.sh start on stopping lightdm)? shutdown 1 个回答 Voted Best Answer muru 2014-12-03T08:09:14+08:002014-12-03T08:09:14+08:00 您需要做的是创建一个Upstart 作业。假设您用于停止 VM 的脚本位于/some/path/vagrant-stop.sh. 根据 VM 的确切性质(它们是仅在您登录到 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 将在您注销时自动运行它。
您需要做的是创建一个Upstart 作业。假设您用于停止 VM 的脚本位于
/some/path/vagrant-stop.sh
.根据 VM 的确切性质(它们是仅在您登录到 GUI 时运行,还是在系统启动时运行等),您可以使用系统作业或会话作业。对于虚拟机仅在您登录到 GUI 时运行的情况,您可以使用会话作业,我将在此处展示一个简单的示例:
创建一个
~/.config/upstart
带有.conf
扩展名的文件(使用你最喜欢的编辑器):内容将是:
运行
initctl check-config
看看有没有报错。现在,您可以通过以下方式停止您的虚拟机(请原谅措辞):
Upstart 将在您注销时自动运行它。