У меня есть серверное приложение, которое я хочу запускать всякий раз, когда работает компьютер, и обычно это так, за исключением того, что иногда я обнаруживаю, что оно само закрылось.
Есть ли bat или скрипт, который я могу запустить, чтобы контролировать приложение и перезапустить его, если оно закроется?
Ответы:
Это не всегда работает (это зависит от того, как программа загружается сама), но обычно вы можете создать командный файл следующим образом:
Я использовал Блокнот в качестве примера.
Линии
Это просто задержка (10 секунд), чтобы дать пользователю возможность прервать процесс до его повторного запуска.
Линия
не требуется, но будет регистрировать каждый раз, когда программа была закрыта для файла, поэтому может быть полезно диагностировать проблему. ErrorLevel может не сказать вам много, но программа должна возвращать 0, если она нормально закрылась, и не нулевое сообщение, если оно не
Обратите внимание, вы упоминаете, что ваша программа ничего не делает, если она уже запущена. Обычно это означает, что приложение запускается, обнаруживает, что другая копия уже запущена, и немедленно завершает работу. Если это так, и ваша программа запускается до запуска этого пакетного файла, то пакет будет зацикливаться и пытаться запускать вашу программу каждые десять секунд.
источник
Исходя из ваших ответов выше, я предлагаю вам поместить эту команду в пакетный файл, а затем настроить этот пакетный файл для запуска в качестве запланированной задачи каждую минуту. С этим практически не связано никаких накладных расходов, и это гарантирует, что ваш процесс будет заявлен независимо от того, собираетесь ли вы даже осознать, что он остановлен.
источник
Я думаю, правильный ответ на этот вопрос зависит от того, почему вы хотите это сделать. Вы пытаетесь решить случайное отключение? Предотвратить случайное «злонамеренное» отключение пользователями машины (например, сотрудниками, закрывающими программное обеспечение для мониторинга)? Предотвратить серьезную и квалифицированную злонамеренную атаку? Вы пытаетесь писать вредоносные программы самостоятельно (в этом случае, пожалуйста, отключитесь ;-))?
Кроме того, как упоминали другие комментаторы, было бы иначе, если бы вы написали службу Windows (например)
Лично я бы, вероятно, начал с написания второго приложения и запуска его таким же образом. Пусть оба приложения периодически сканируют друг друга и, при необходимости, перезагружаются - убедитесь, что вы предоставляете простой способ для законного закрытия приложения!
Тем не менее, и учитывая ваш комментарий «иногда я обнаружу, что он закрылся сам по себе», я бы НАЧИНАЛ вначале, пытаясь выяснить, почему он закрыт ...
источник
Вы можете использовать программу под названием ReStartMe 2.0 [ Mirror ] делает именно это:
Отслеживает процессы и перезапускает их, если они закрываются.
источник
это намного лучше! этот код, который я использовал для игрового сервера, должен быть сохранен в файле .bat
источник