Estou tentando forçar a tela do GNU a criar um terminal "virtual", sem anexá-lo, executar o script dentro e NÃO encerrar a sessão quando o script terminar.
Eu tentei muitas combinações, incluindo:
screen -dmS udplistener /share/Sys/autorun/start_udp_listeners.sh
ou
screen -S udplistener -X /share/Sys/autorun/start_udp_listeners.sh
e nenhum deles funcionou. Eu recebo a sessão sem script executado, o script é executado, mas a sessão é encerrada quando termina ou estou recebendo o erro "Nenhuma sessão de tela encontrada".
O que eu basicamente estou tentando fazer é executar o ouvinte UDP, escrito em PHP e fazê-lo funcionar no loop infinte (não interrompa a escuta). Sim - eu poderia executar o script PHP &
no final, forçando a CLI do PHP a ser executada como daemon. O problema é que estou usando um pedaço de lixo chamado servidor (QNAP - nunca compre esse lixo!), O que parece estar ignorando isso. Assim que eu saio da sessão SSH, os scripts param.
Então screen
parece ser a única opção. Mas não consigo entender, por que ele termina a sessão depois que o comando ou script executado termina?
Edição : Eu também tentei exemplo encontrado na Internet:
screen -dmS name
screen -S name -p windowname -X stuff 'mc
'
Não falta! Depois de anexá-lo ( screen -R name
), vejo que o Comandante da Meia-Noite NÃO foi executado. Embora o autor do exemplo tenha dito, será.
screen
fechamento? BTW: Eu ainda não entendi a idéia! Se eu ligar screen -dmS name
, crio uma janela desanexada, que também não tem mais nada a fazer. Mas não é fechado automaticamente! Mas quando eu quero executar algo nessa tela desanexada, ele termina quando a execução é concluída. Por quê? Não vejo lógica aqui. Pode ter janela fazendo nada, mas não pode ter janela fazendo alguma coisa e depois não fazendo nada?
&
no final), devido ao servidor de bugs (QNAP), eles são encerrados quando a sessão termina (disseram-me, eles não deveriam estar no Linux normal, se executados com &
). Portanto, não pretendo fazer nada após a start_udp_listeners.sh
conclusão, apenas como impedir que a sessão seja encerrada. Enquanto isso não estiver, meus ouvintes de PHP estão funcionando bem.
screen
, você cria apenas uma janela para executar um único comando. Quando o comando sai, a janela se fecha escreen
não há mais nada a fazer, então sai.