Существует батник C:\_majordomo\shutdown.bat, позволяющий остановить МЖД без ошибок. Проблема в том, что его нельзя использовать в другом батнике, например, для остановки и рестарта МЖД, т.к. последняя строка в shutdown.bat убивает все процессы cmd в системе, в том числе и наш.
Решение проблемы возможно несколькими способами, причём самые простые варианты, имхо, доступны при использовании cscript или nircmd, идущего в стандартной установке МЖД.
Вариант для nircmd:
Создаём файл c:\_majordomo\reboot_mjd.ncl
wait 5000
killprocess vlc.exe
killprocess Apache.exe
killprocess mysqld.exe
killprocess php.exe
killprocess php.exe
killprocess Server2Go.exe
killprocess USBDeview.exe
killprocess batteryrun.exe
killprocess start.exe
killprocess cmd.exe
wait 1000
killprocess vlc.exe
killprocess Apache.exe
killprocess mysqld.exe
killprocess php.exe
killprocess php.exe
killprocess Server2Go.exe
killprocess start.exe
killprocess cmd.exe
wait 5000
exec2 show "c:\_majordomo" "c:\_majordomo\start.exe"
Фактически, это повторение shutdown.bat, только оформленное в виде скрипта для nircmd + добавлена команда старта МЖД. На всякий случай, остановка МЖД сделана два раза.
В МЖД создаём сценарий rebootMJD
say('Внимание, перегружаюсь!', 2);
sleep(5);
safe_exec('c:\_majordomo\apps\nircmd\nircmd.exe script "c:\_majordomo\reboot_mjd.ncl"');
Запуск этого сценария и перезапускает МЖД.
Если нужно перегрузить машину, создаём файл для nircmd c:\_majordomo\reboot_sys.ncl
wait 5000
killprocess vlc.exe
killprocess Apache.exe
killprocess mysqld.exe
killprocess php.exe
killprocess php.exe
killprocess Server2Go.exe
killprocess USBDeview.exe
killprocess batteryrun.exe
killprocess start.exe
killprocess cmd.exe
wait 1000
killprocess vlc.exe
killprocess Apache.exe
killprocess mysqld.exe
killprocess php.exe
killprocess php.exe
killprocess Server2Go.exe
killprocess start.exe
killprocess cmd.exe
initshutdown "shutting down the system within 10 seconds" 10 reboot
В МЖД создаём сценарий rebootSys
say('Перезагрузка машины!', 2);
sleep(5);
safe_exec('c:\_majordomo\apps\nircmd\nircmd.exe script "c:\_majordomo\reboot_sys.ncl"');
или вариант с дампом базы:
say('Сохраняю копию базы', 2);
$filename = ROOT . '/database_backup/db.sql';
$mysqlDumpPath = 'c:/_majordomo/server/mysql/bin/mysqldump.exe';
$mysqlDumpParam = ' --user=' . DB_USER . ' --password=' . DB_PASSWORD;
$mysqlDumpParam .= ' --no-create-db --add-drop-table --databases ' . DB_NAME;
if (file_exists($filename)) rename($filename, $filename . '.prev');
exec($mysqlDumpPath . $mysqlDumpParam . ' > ' . $filename);
say('Перезагрузка машины. До свидания!', 2);
safe_exec('c:\_majordomo\apps\nircmd\nircmd.exe script "c:\_majordomo\reboot_sys.ncl"');
Домодедово, Россия
На форуме: xor