Я пытаюсь заставить экран GNU создать «виртуальный» терминал, не подключаясь к нему, выполнить сценарий внутри и НЕ завершать сеанс после завершения сценария.
Я перепробовал много комбинаций, в том числе:
screen -dmS udplistener /share/Sys/autorun/start_udp_listeners.sh
или
screen -S udplistener -X /share/Sys/autorun/start_udp_listeners.sh
и никто из них не работал. Я либо получаю сеанс без выполненного сценария, сценарий выполняется, но сеанс прекращается после его завершения, или я получаю сообщение об ошибке «Нет сеанса экрана найден»
В основном я пытаюсь запустить слушатель UDP, написанный на PHP, и заставить его работать в бесконечном цикле (не прерывать прослушивание). Да, я мог бы запустить PHP-скрипт &
в конце, заставив PHP CLI работать как демон. Проблема в том, что я использую кусок мусора, называемый сервером (QNAP - никогда, никогда не покупайте этот мусор!), Который, кажется, игнорирует это. Как только я завершаю сеанс SSH, сценарии останавливаются.
Так что, screen
кажется, единственный вариант. Но я не могу понять, почему он завершает сессию после завершения выполненной команды или сценария?
РЕДАКТИРОВАТЬ : Я также попробовал пример, найденный в Интернете:
screen -dmS name
screen -S name -p windowname -X stuff 'mc
'
Нет недостатка! После прикрепления к нему ( screen -R name
) я вижу, что Полуночный Командир не был казнен. Хотя автор примера сказал, что так и будет.
screen
закрытия? Кстати, я до сих пор не понимаю идею! Если я звоню screen -dmS name
, я создаю отдельное окно, которому тоже нечего делать. Но он не закрывается автоматически! Но когда я хочу выполнить что-то на этом отдельном экране, это заканчивается, когда выполнение завершено. Зачем? Я не вижу здесь логики. Может ли окно ничего не делать, но не может, чтобы окно что-то делало, а потом ничего не делало?
&
в конце), из-за глючного сервера (QNAP) они завершаются по окончании сеанса (мне сказали, что они не должны работать в обычном Linux, если выполняются с &
). Так что я не собираюсь ничего делать после start_udp_listeners.sh
финиша, только как предотвратить прекращение сессии. Пока это не так, мои слушатели PHP работают просто отлично.
screen
, вы только создаете одно окно для запуска одной команды. Когда команда завершается, окно закрывается иscreen
больше нечего делать, поэтому оно завершается.