![关机/重启前执行命令](https://linux22.com/image/1101565/%E5%85%B3%E6%9C%BA%2F%E9%87%8D%E5%90%AF%E5%89%8D%E6%89%A7%E8%A1%8C%E5%91%BD%E4%BB%A4.png)
我有一台机器运行着几个 vagrant VM。我遇到的问题是,有时我会在关闭或重启机器之前忘记关闭这些 VM。因此,我的机器会卡住并显示以下消息:waiting for vboxnet0 to become free
我搜索了解决方案并找到了此页面:
http://en.kioskea.net/faq/3348-ubuntu-executing-a-script-at-startup-and-shutdown
我尝试了他们关机的方法,但是没有用。
我为该命令编写了一个 sh 文件:
#!/bin/bash
cd ~/workspace/git/mediaservice
vagrant halt
有什么建议么?
答案1
要在关机或重启时执行脚本:
- 将您的脚本保存在 /etc/rc6.d 中
- 使其可执行:
sudo chmod +x K99_script
笔记:
- rc6.d 中的脚本不能带有 .sh 扩展名
- 您的脚本名称必须以 K99 开头才能在正确的时间运行。
- 该目录中的脚本按字母顺序执行。
答案2
在 /etc/init.d/ 目录中使用您的脚本创建一个 shell 可执行文件。
由于这必须在关机或重启期间执行,因此需要在 /etc/rc0.d/ 和 /etc/rc6.d 中创建软链接
例子:
sudo ln -s /etc/init.d/<your_file> /etc/rc0.d/k99stop_vm
sudo ln -s /etc/init.d/<your_file> /etc/rc6.d/k99stop_vm
sudo chmod a+x /etc/init.d/<your_file>
答案3
如果你的 vagrant VM 使用的是 VirtualBox,你可以修改/etc/default/virtualbox
并更改以下行:
SHUTDOWN_USERS=""
到
SHUTDOWN_USERS="all"
这帮我在 Ubuntu 14.04 上修复了这个问题。
答案4
您可以在这里找到解决方案:在系统关闭/启动时暂停/恢复所有 Vagrant 框。
有一个简单的初始化脚本,可以在关闭之前暂停所有正在运行的机器。
安装
编辑/etc/init.d/vagrant-boxes
并粘贴上述文章中的脚本并保存。或者从这里下载并将其保存到/etc/init.d/vagrant-boxes
。在 debian/ubuntu 等上,运行
# update-rc.d vagrant-boxes defaults 99 01
数字 99 是序列号,应该大于(在我的 Virtualbox 中是数字 20,顺便说一下,这是 Debian 发行版的默认数字)。第二个数字是关闭计算机时的序列。所以,最好先这样做。