@atomos90

Как под windows запустить скрипт, не привязываясь к нему?

Скрипт 1 запускается по планировщику и проверяет, работает ли скрипт 2 и запускает его, если нет. Скрипт 2 работает в бесконечном цикле (демон). Нужно, чтобы скрипт 1 запустил скрипт 2 и завершился (закрыл себя), а не ждал закрытия скрипта 2.
В CentOS это решалось так: "nohup СКРИПТ_2 1>/dev/null 2>/dev/null &"
Есть ли аналогичное решение под windows? "start /min СКРИПТ_2 >NUL" не помогает. Окно скрипта 1 так и остается работать и ждет закрытия скрипта 2
  • Вопрос задан
  • 125 просмотров
Решения вопроса 1
@res2001
Developer, ex-admin
Решение под Windows - запускать скрипт через команду start - оно точно работает, проверено лично раз 200 и не нужно убеждать меня в обратном.
Если у вас не работает, значит нужно разбираться почему, ошибки или что? Если просто ждет закрытия, покажите код вашего скрипт1, тот кусок где start +- несколько строк.
И да, надеюсь ваши скрипт1/2 в реале имеют другие названия и не называются start.bat к примеру.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@pantsarny
А можно предложить пойти другим путем? Используйте Mutex.
Вам понадобится только один (основной) скрипт в данном случае, который начинается так (php):

<?php
$lock = @fopen('bot.lock', 'w');
if (false === $lock || false === @flock($lock, LOCK_EX | LOCK_NB)) {
    return;
}


Суть заключается в том что при старте скрипт создает файл и делает эксклюзивную блокировку на него. Если файл уже заблокирован - скрипт завершает работу. В любом случае когда процесс отвалится - отвалится и блокировка на файл, и соответственно код пойдет дальше.
Ответ написан
Комментировать
Ezhyg
@Ezhyg
Скрипт 2 работает в бесконечном цикле (демон

Можно поступить ещё проще - сделать этот "скрипт" службой (т.е. настоящим "демоном") и дальше уж пусть за его состоянием следит сама ОСь, в частности перезапускает в случае падения.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы