~/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 환경 변수에 구체적으로 할당하는 것을 고려해 보겠습니다. 이 경우 시작 환경에는 실행해야 하는 프로그램에 대한 적절한 경로가 포함되어 있지 않을 수 있습니다.

관련 정보