该脚本位于/etc/init.d中:
#!/bin/bash
VMUSER=myname
CURRDATE=(`date +"%m-%d-%Y"` + `date +"%H:%M:%S"`)
CURRTIME=(`date +"%X"`)
FILE=/home/myname/log/vm-services.log
VBPATH=/usr/bin
start(){
echo "Starting VM Guest"
echo "Starting VM Services on $CURRDATE at $CURRTIME" >> $FILE
sudo -u $VMUSER $VBPATH/VBoxManage startvm sherbet --type headless
}
stop(){
echo "Stopping VM Guest"
echo "Stopping VM Services on $CURRDATE at $CURRTIME" >> $FILE
sudo -u $VMUSER $VBPATH/VBoxManage controlvm sherbet savestate
}
restart(){
echo "Restart"
echo "Restarted on $CURRDATE at $CURRTIME" >> $FILE
}
case "$1" in
start)
echo "In Start" >> $FILE
start
;;
stop)
stop
;;
restart)
restart
;;
*)
echo "Usage: vm-service {start|stop}"
exit 1
esac
当我重新启动时,将调用脚本停止。但 Ubuntu 重新启动后,start 永远不会被调用。该脚本似乎具有正确的执行设置:
关闭的回显正在工作,因为我看到了该条目。
我安装的脚本如下:
=> sudo update-rc.d vm-services 默认值 99 01
我可以毫无问题地手动启动/停止: =>/etc/init.d/vm-services start =>/etc/init.d/vm-services stop
任何建议将不胜感激
2014 年 8 月 19 日更新 - 下午 1:24我修改了上面的脚本,现在包括指向 VBoxManage 路径的 VBPATH。但这不起作用。重新启动时总是会调用停止点,但启动点永远不会被调用。仅将字符串发送到文件不会被命中。重新启动时它每次都会这样做。
答案1
好吧,问题是因为我在安装时检查了我的主目录是否已加密。因此,当我将调试选项放入脚本中时:
〜/ bin / bash -x
我注意到当脚本尝试运行时它说主文件夹无法解密。因此,我继续删除主文件夹的加密并重新启动计算机,现在一切正常。解除加密的过程有几个步骤可以查到这里
答案2
我会考虑将特定的分配给 PATH 环境变量,以便您确信启动脚本从正确的位置获取二进制文件。在这种情况下,启动环境可能不包含您需要执行的程序的适当路径。