
スクリプトは/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環境変数に具体的に割り当てることを検討します。この場合、起動環境には、実行する必要があるプログラムへの適切なパスが含まれていない可能性があります。