Écran GNU et espaces de noms PID

1

J'ai l'écran GNU s'exécutant dans le conteneur LXC, ayant ainsi un espace de noms PID privé. J'essaie de joindre à cet écran depuis "en dehors" de l'espace de noms. Les deux écrans partagent le système de fichiers, ils peuvent donc accéder au même socket. La screen -lssession "externe" répertorie la session correctement, mais la tentative de liaison avec screen -xéchoue avec le message " Tentative d'attachement avec un pid incorrect (XXX)! " Sur l'écran d'origine s'exécutant dans le conteneur lxc. L'écran de l'attacheur "externe" attend 15 secondes et se termine avec le message " Soudain, le donjon s'effondre !! - Vous mourez ... " et un comme code d'erreur.

L'attacheur "externe" est capable de détacher l'écran à distance avec screen -dun délai d'expiration de 15 secondes et une erreur "Réduire". L'attacheur "externe" est capable d'exécuter des commandes screen -Xsans aucun problème. Cependant screen -Qpasse commande dans l' écran en cours d' exécution puis raccrochez et attendez Ctrl + C, laissant prise mort suffixé -queryAen /var/run/screen/.

Il est naturel que l'écran "interne" ne puisse pas voir l'écran "externe" car ils ne partagent pas l'espace de noms Pid. Est-il possible de désactiver l'écran de vérification PID? Pourquoi avons-nous besoin de cette vérification lorsque nous attachons à l'écran de toute façon? L’accès à la prise ne suffit-il pas pour que les écrans puissent communiquer correctement entre eux?

Mise à jour : j'ai envoyé une demande à maillist screen-devel via le rapport de bogue n ° 35324 .

Myroslav
la source
Se pourrait-il que le conteneur considère les processus extérieurs comme ayant un PID == 1? Le code source de screenrejette explicitement le PID 1 pour des raisons inconnues.
Grawity
Dans le conteneur LXC, seuls les processus internes sont visibles. Parmi les processus internes, il existe un processus avec le PID 1, mais c'est un processus qui est lancé via lxc et celui qui génère l'écran "interne" plus tard. L'écran interne obtient le PID correct de l'écran d'attaché, il ne peut simplement pas y accéder, en raison de l'espace de noms pid différent.
Myroslav
"Dans le conteneur LXC, seuls les processus internes sont visibles", ce qui pourrait être une cause. Mais les connexions socket Unix envoient automatiquement le PID du client au serveur, c'est ce que je demandais.
Grawity
Quel est le problème avec l'impossibilité d'accéder au processus avec pid "externe"? Comme je l'ai écrit dans la question elle-même, screen -X passe avec succès les commandes à screen.
Myroslav
... vous devrez demander aux développeurs d'écran à ce sujet. J'ai seulement trouvé le chèque, mais il n'a pas été écrit pourquoi le chèque a été ajouté.
Grawity