На машине под управлением Alt9 установлен VirtualBox. Нужно, чтобы при выключении или перезагрузке запущенная виртуалка автоматически переводилась в спящий режим.
Написал следующий скрипт
-bash-4.4$ cat /etc/init.d/AxiSrvSlp.sh
#!/bin/sh
### BEGIN INIT INFO
# Provides: AxiSrvSleep
# Required-Start: $all
# Required-Stop: $all
# Default-Start: 3 4 5
# Default-Stop: 0 1 2 6
# Short-Description: AxiSrvSleep
# Description: AxiSrvSleep
### END INIT INFO
lock_file=/var/lock/subsys/axisrv
start() {
touch "$lock_file"
echo "start" >> /home/atgs/axisrv.log
}
stop() {
export HOME="/home/atgs"
su atgs -c "VBoxManage controlvm axisrv savestate" &>> /home/atgs/axisrv.log
export HOME="root"
date +%D' '%T >> /home/atgs/axisrv.log
echo "VM axisrv shutdown" >> /home/atgs/axisrv.log
rm -f "$lock_file"
}
restart()
{
stop
start
}
case $1 in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
*)
echo "$1" >> /home/atgs/axisrv.log
esac
exit 0;
и выполнил команду chkconfig --add /etc/init.d/AxiSrvSlp.sh, после чего на скрипт появились следующие ссылки (были с 50-м номером, я передвинул 4-ю позицию).
-bash-4.4$ ls -ahl /etc/rc.d/rc{0,1,2,3,4,5,6}.d|grep Axi
lrwxrwxrwx 1 root root 22 июн 4 21:59 K04AxiSrvSlp.sh -> ../init.d/AxiSrvSlp.sh
lrwxrwxrwx 1 root root 22 июн 4 21:59 K04AxiSrvSlp.sh -> ../init.d/AxiSrvSlp.sh
lrwxrwxrwx 1 root root 22 июн 4 21:59 K04AxiSrvSlp.sh -> ../init.d/AxiSrvSlp.sh
lrwxrwxrwx 1 root root 22 июн 4 21:59 S04AxiSrvSlp.sh -> ../init.d/AxiSrvSlp.sh
lrwxrwxrwx 1 root root 22 июн 4 21:59 S04AxiSrvSlp.sh -> ../init.d/AxiSrvSlp.sh
lrwxrwxrwx 1 root root 22 июн 4 21:59 S04AxiSrvSlp.sh -> ../init.d/AxiSrvSlp.sh
lrwxrwxrwx 1 root root 22 июн 4 21:59 K04AxiSrvSlp.sh -> ../init.d/AxiSrvSlp.sh
Скрипт успешно выполняется при выключении системы. Проблема в том, что он выполняется уже после того, как VirtualBox нештатно завершает работу виртуалки. Вот что пишется в логе:
start
VBoxManage: error: Machine 'axisrv' is not currently running
06/04/20 22:47:02
VM axisrv shutdown
Что я упускаю? По идее, скрипт должен выполниться самым первым.