Я пытаюсь заставить экран 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больше нечего делать, поэтому оно завершается.