〜/ bin / bash -x

〜/ bin / bash -x

该脚本位于/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 环境变量,以便您确信启动脚本从正确的位置获取二进制文件。在这种情况下,启动环境可能不包含您需要执行的程序的适当路径。

相关内容