J'essaie de forcer GNU screen à créer un terminal "virtuel", sans s'y attacher, à exécuter le script à l'intérieur et à NE PAS terminer la session une fois le script terminé.
J'ai essayé plusieurs combinaisons, notamment:
screen -dmS udplistener /share/Sys/autorun/start_udp_listeners.sh
ou
screen -S udplistener -X /share/Sys/autorun/start_udp_listeners.sh
et aucun d'eux n'a fonctionné. Soit j'ai une session sans script exécuté, le script s'exécute, mais la session est terminée une fois qu'il s'est terminé ou j'obtiens l'erreur "Aucune session d'écran trouvée".
Ce que je cherche à faire, c’est d’exécuter un programme d’écoute UDP, écrit en PHP, et de le faire fonctionner en boucle infinie (ne pas interrompre l’écoute). Oui, je pourrais exécuter un script PHP &
à la fin, forçant PHP CLI à s'exécuter en tant que démon. Le problème, c'est que j'utilise un fichier indésirable appelé serveur (QNAP - ne l'achetez jamais, jamais!), Ce qui semble l'ignorer. Dès que je ferme la session SSH, les scripts s'arrêtent.
Donc, screen
semble être la seule option. Mais je ne comprends pas pourquoi il termine la session une fois que la commande ou le script est exécuté.
EDIT : J'ai aussi essayé des exemples trouvés sur Internet:
screen -dmS name
screen -S name -p windowname -X stuff 'mc
'
Pas de manque! Après screen -R name
m'y être attaché ( ), je vois que Midnight Commander N'A PAS été exécuté. Bien que l'exemple de l'auteur dise, ce sera le cas.
screen
fermeture? BTW: Je ne comprends toujours pas l'idée derrière! Si j'appelle screen -dmS name
, je crée une fenêtre détachée, qui n'a également plus rien à faire. Mais ce n'est pas automatiquement fermé! Mais lorsque je veux exécuter quelque chose dans cet écran séparé, il se termine une fois que l'exécution est terminée. Pourquoi? Je ne vois pas la logique ici. Une fenêtre peut-elle ne rien faire, mais ne peut-elle pas faire quelque chose et ne rien faire?
&
à la fin), en raison d'un serveur buggy (QNAP), ils sont terminés à la fin de la session (on m'a dit, ils ne devraient pas sous Linux normal s'ils sont exécutés avec &
). Donc, je ne cherche pas à faire quoi que ce soit après la start_udp_listeners.sh
fin, mais seulement à empêcher la fin de la session. Tant que ce n'est pas le cas, mes auditeurs PHP fonctionnent parfaitement.
screen
, vous ne créez qu'une fenêtre pour exécuter une seule commande. Lorsque la commande se ferme, la fenêtre se ferme etscreen
n'a plus rien à faire. Elle se ferme donc.