выполнение скрипта до перезапуска/выключения ПК

вопросы о программном обеспечении

Модератор: syned

Правила форума

Если Вы хотите, чтобы Вам быстрее помогли в вашей проблеме, пожалуйста сообщите след. информацию, которая будет очень полезна для тех кто собирается Вам помочь:

1) конфигурация компьютера
2) как давно переустанавливался windows и какой антивирус; firewall используется (какие послед. обновления баз на них используются)
3) какое используется ус-во, тип соединения (если проблема касается Интернета)
4) как давно проводилась чистка от пыли
5) какая температура процессора без нагрузки (можно использовать Everest)
Ответить
Аватара пользователя
style
Курчатовец
Курчатовец
Сообщения: 97
Зарегистрирован: 11 дек 2008 12:42
Контактная информация:

выполнение скрипта до перезапуска/выключения ПК

#1

Непрочитанное сообщение style » 17 апр 2011 23:08

Всех приветствую. Имеется комп с операционкой Ubuntu 10.10 server x64, на нем крутится виртуалка на windows 2003 server. Необходимо:
Сделать так, чтобы до завершения работы основной ОС сперва корректно завершала работу гостевая операционка. Т.е. грубо говоря, если я ввожу poweroff на ubuntu, то сперва должен завершить работу Windows 2003 server, а потом только выключилась хостовая система.

Что я сделал. Создал скрипт /etc/init.d/shutdownVM следующего содержания:
#!/bin/sh
net rpc shutdown -f -t 10 -S 192.168.202.103 -U login%password
sleep 30
exit 0

Назначил для него права на запуск и создал символьные ссылки для него в директориях /etc/rc0.d и /etc/rc6.d коммандами
ln -s /etc/init.d/shutdownVM /etc/rc0.d/S19shutdownVM
ln -s /etc/init.d/shutdownVM /etc/rc6.d/S19shutdownVM

Если я выполняю данный скрипт из терминала, то все работает, т.е. гостевая ОС корректно завершает работу, но при выключении или перезапуске данный скрипт игнорируется и гостевая ОС обрубается некорректно. Подскажите, пожалуйста, в чем может быть проблема.

pr1zrak_46
И мысль моя ясна
И мысль моя ясна
Сообщения: 430
Зарегистрирован: 10 фев 2009 18:27

Re: выполнение скрипта до перезапуска/выключения ПК

#2

Непрочитанное сообщение pr1zrak_46 » 17 апр 2011 23:24

man update-rc.d )))

Не особо юзал бунтовскую систему, но! чем меньше первая цифра в rc - тем раньше останавливается приложение, соответственно я думаю скрипт можно оставить только в rc0.d

далее установим порядок загрузки
обычно ставят: update-rc.d S19shutdownVM defaults 50
думаю что где-то так должно быть, чтобы позже загружался скрипт и самый первый останавливался:
update-rc.d S19shutdownVM start 70 2 3 4 5 . stop 20 0 1 6 .

pr1zrak_46
И мысль моя ясна
И мысль моя ясна
Сообщения: 430
Зарегистрирован: 10 фев 2009 18:27

Re: выполнение скрипта до перезапуска/выключения ПК

#3

Непрочитанное сообщение pr1zrak_46 » 17 апр 2011 23:27

Ps. ответил Myaso)) Myaso

Аватара пользователя
style
Курчатовец
Курчатовец
Сообщения: 97
Зарегистрирован: 11 дек 2008 12:42
Контактная информация:

Re: выполнение скрипта до перезапуска/выключения ПК

#4

Непрочитанное сообщение style » 20 апр 2011 11:30

Пока не получается. Проделал следующее:

Отредактировал мой скрипт, получилось (скрипт переименовал в svm)

#!/bin/sh
### BEGIN INIT INFO
# Provides: svm
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 0 1 6
# Default-Stop: 0 1 6 (это поле пробовал оставлять пустым)
# Short-Description: Stop daemon at boot time
# Description: Enable service provided by daemon.
### END INIT INFO
PATH=/etc/init.d/svm
net rpc shutdown -f -t 10 -S 192.168.202.103 -U login%pass
sleep 30
exit 0

Снова ввел комманду
update-rc.d svm stop 19 0 1 6 . на что он мне сказал

Adding system startup for /etc/init.d/svm ...
/etc/rc0.d/K19svm -> ../init.d/svm
/etc/rc1.d/K19svm -> ../init.d/svm
/etc/rc6.d/K19svm -> ../init.d/svm

т.е. Вроде как добавил скрипт на все уровни, отвечающие за перезапуск и завершение работы. Ввожу в терминале reboot и …...... нифига не получилось, таже самая фигня.

Попробовал подругому:

update-rc.d svm start 19 0 1 6 . вывел

/etc/rc0.d/S19svm -> ../init.d/svm
/etc/rc1.d/S19svm -> ../init.d/svm
/etc/rc6.d/S19svm -> ../init.d/svm
Пробую еще раз перезапускаться и........... опять нифига

update-rc.d svm start 19 0 1 6 . stop 19 0 1 6

Далее пробую отредактировать скрипт в соответствии с /etc/init.d/skeleton


В вебмине нашел пускт который отвечает за загрузку и завершение работы. В он на автомете отредактировал данный скрипт следующим обрзом.

Вебминовская версия

#!/bin/sh

case "$1" in
'start')
net rpc shutdown -f -t 10 -S 192.168.202.103 -U login%pass
sleep 30
;;
'stop')
net rpc shutdown -f -t 10 -S 192.168.202.103 -U login%pass
sleep 30
;;
*)
echo "Usage: $0 { start | stop }"
;;
esac
exit 0

Тело stop и start пробовал в разных комбинациях. Толку нет. В скрипте /etc/init.d/skeleton
более менее понятна лишь шапка, начиная с ### BEGIN INIT INFO, заканчивая ### END INIT INFO, а остальные 200 с чем то строк для меня темный лес и не понятно, что с ними делать, оставлять как есть, удалять, или редактировать что то...

Извиняюсь за корявость. Пишу в полусонном состоянии. Наставьте меня, пожалуйста, на путь истинный. Кстати говоря, если этот скрипт
#!/bin/sh
net rpc shutdown -f -t 10 -S 192.168.202.103 -U login%pass
sleep 90
exit 0
засунуть в автозагрузку с помощью
update-rc.d svm defaults 95
то он выполняется при запуске системы без проблем. Почему же не получается при выключении...

Аватара пользователя
style
Курчатовец
Курчатовец
Сообщения: 97
Зарегистрирован: 11 дек 2008 12:42
Контактная информация:

Re: выполнение скрипта до перезапуска/выключения ПК

#5

Непрочитанное сообщение style » 21 апр 2011 20:39

Проблема решена. Более подробно решение описано на ТВКшном форуме в посте SerXX, кому интересно, вот ссылка.
http://forum.kurchatov.net/viewtopic.ph ... 4#p1215454

SerXX, Myaso.
Спасибо за помощь!

Аватара пользователя
KurchatovCity
Администратор
Администратор
Сообщения: 14834
Зарегистрирован: 06 сен 2008 08:39
Откуда: Курская обл.

Re: выполнение скрипта до перезапуска/выключения ПК

#6

Непрочитанное сообщение KurchatovCity » 22 апр 2011 10:27

А он не доступен для внешнего Интернета (адрес в смысле)!

gomchik
Прохожий
Прохожий
Сообщения: 2
Зарегистрирован: 12 май 2012 22:04

Re: выполнение скрипта до перезапуска/выключения ПК

#7

Непрочитанное сообщение gomchik » 12 май 2012 22:21

Приветствую.
Уважаемые форумчане, продублируйте пожалуйста решение проблемы в этой теме, т.к. столкнулся с такой же проблемой и ищу решение, а указанная ссылка недоступна.

Аватара пользователя
style
Курчатовец
Курчатовец
Сообщения: 97
Зарегистрирован: 11 дек 2008 12:42
Контактная информация:

Re: выполнение скрипта до перезапуска/выключения ПК

#8

Непрочитанное сообщение style » 13 май 2012 11:35

# cat /etc/rc6.d/K10test_init

#!/bin/sh
### BEGIN INIT INFO
# Provides: test_init
# Required-Start: test_init
# Required-Stop: $local_fs $remote_fs $network $syslog $all
# Default-Start:
# Default-Stop: 0 6
# Should-Stop:
# Short-Description: test_init
# Description: test_init
### END INIT INFO

PATH=/sbin:/bin:/usr/bin
. /lib/init/vars.sh
. /lib/lsb/init-functions

case "$1" in
'stop')
echo working > /root/test_init.log
exit 1
;;
*)
echo "Usage: $0 { stop }"
;;
esac
exit 0





Вместо "echo working > /root/test_init.log" подставь комманду, которая тебе нужна.

gomchik
Прохожий
Прохожий
Сообщения: 2
Зарегистрирован: 12 май 2012 22:04

Re: выполнение скрипта до перезапуска/выключения ПК

#9

Непрочитанное сообщение gomchik » 15 май 2012 21:34

Спасибо большое за выложенный скрипт.

Все-таки справился без дополнительных премудростей.

Опишу свою ситуацию, возможно кому-то пригодится решение.

Необходимо было организовать автоматическое копирование рабочей базы, которая находилась в ramdisk при выключении/перезагрузке сервера и копировании в ramdisk при загрузке.
Скрипты получились такие.

1) Из ramdisk в backup выполняется при выключении и перезагрузке сервера
# cat /etc/rc[0, 6].d/K02ramdisk_to_backup.sh

#!/bin/sh
### BEGIN INIT INFO
# Provides: ramdisk_to_backup
# Required-Start:
# Required-Stop:
# Should-Stop:
# Default-Start:
# Default-Stop: 0 6
# Short-Description: Copy xxx with ramdisk to backup
### END INIT INFO

a=$(date +%T_%d-%m-%Y)_xxx

rm -rf /home/backup/ramdisk/old/*
mv /home/backup/ramdisk/*_xxx /home/backup/ramdisk/old
mkdir /home/backup/ramdisk/$a
cp -i -p -R /ramdisk/* /home/backup/ramdisk/$a

2) Из backup в ramdisk при загрузке
# cat /etc/rc[2-5].d/S01backup_to_ramdisk.sh

#!/bin/sh
### BEGIN INIT INFO
# Provides: backup_to_ramdisk
# Required-Start: $local_fs $remote_fs
# Required-Stop: $local_fs $remote_fs
# Default-Start: 2 3 4 5
# Default-Stop:
# Short-Description: Copy xxx with backup to ramdisk
### END INIT INFO

cp -i -p -R /home/backup/ramdisk/*_xxx/xxx /ramdisk/

Все работает в Debian 6.0.1 и Ubuntu (с небольшими изменениями в уровне запуска)

Ответить

Вернуться в «ПО, софт»