Я намагаюся змусити екран GNU створити "віртуальний" термінал, не приєднуючись до нього, виконувати скрипт всередині і НЕ припиняти сеанс, коли сценарій закінчується.
Я спробував багато комбінацій, включаючи:
screen -dmS udplistener /share/Sys/autorun/start_udp_listeners.sh
або
screen -S udplistener -X /share/Sys/autorun/start_udp_listeners.sh
і ніхто з них не працював. Я або отримую сеанс без виконаного сценарію, сценарій виконується, але сеанс припиняється, коли він закінчується, або я отримую помилку "Не знайдено сеанс на екрані".
Те, що я в основному намагаюся зробити, це запустити слухача UDP, написаного на PHP, і змусити його працювати в циклі infinte (не порушувати прослуховування). Так - я міг запустити PHP-скрипт із &
кінцем, змусивши PHP CLI запуститись як демон. Проблема полягає в тому, що я використовую шматок сміття під назвою сервер (QNAP - ніколи, ніколи не купуй цей мотлох!), Який, схоже, ігнорує це. Як тільки я виходжу з сеансу SSH, сценарії припиняються.
Так screen
здається, єдиний варіант. Але я не можу зрозуміти, чому він припиняє сеанс, коли виконується команда чи сценарій закінчується?
EDIT : Я також спробував приклад, знайдений в Інтернеті:
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
нічого не залишається робити, тому воно виходить.