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