Parfois, généralement après un crash ou un arrêt soudain, screen
refuse de démarrer. Des commandes comme
screen
screen -ls
screen -r
screen -d
aboutir à la sortie suivante
Impossible de créer le répertoire '/ var/run/screen': autorisation refusée
Quel est le problème ici? Comment puis-je réparer cela?
Ce problème a été documenté ici . En bref,
/etc/rcS.d/S70screen-cleanup
s'exécute via Upstart beaucoup plus tôt que prévu et ne nettoie pas correctement ce répertoire.
Il peut être corrigé avec la commande suivante
Sudo /etc/init.d/screen-cleanup start
Nous avons trouvé une solution qui n'exige pas de redémarrage régulier de Sudo
De 'Eric Z Ma' @ systutorials :
Le répertoire
/var/run/screen/
est le répertoire du socket pour screen.Heureusement, screen lit une variable d'environnement
SCREENDIR
pour obtenir un autre répertoire de socket.Donc, pour contourner ce problème, vous pouvez créer un répertoire, tel que
~/.screen
:mkdir ~/.screen && chmod 700 ~/.screen
et exportez la
SCREENDIR
pour qu'elle pointe vers ce répertoire:export SCREENDIR=$HOME/.screen
Vous pouvez également insérer cette ligne dans votre
~/.bashrc
pour qu’elle prenne effet par la suite.
Je me suis heurté à cette situation en exécutant une distribution basée sur Centos/RHEL 7, qui ne contient aucun élément appelé "nettoyage de l'écran" sous/etc.
Une solution de contournement que j'ai trouvée consistait simplement à exécuter Sudo screen
et à en sortir immédiatement.
Après cela, j’ai été en mesure d’exécuter screen sans aucun privilège spécial. Il semble donc que le fichier/var/run soit nettoyé de manière appropriée lorsqu’il en a l'occasion.
Je peux résoudre ce problème en exécutant les commandes suivantes.
Sudo mkdir /var/run/screen
Sudo chmod 777 /var/run/screen
TL; DR : dans Debian Stretch et versions ultérieures, assurez-vous que systemd-tmpfiles-setup.service
a été démarré avec succès:
$:> systemctl status systemd-tmpfiles-setup.service
● systemd-tmpfiles-setup.service - Create Volatile Files and Directories
Loaded: loaded (/lib/systemd/system/systemd-tmpfiles-setup.service; static; vendor preset: enabled)
Active: active (exited) since Thu 2018-06-21 19:54:06 CEST; 41min ago
...
Si elle est désactivée (Loaded: ... ;disabled; ...
), vous voudrez peut-être l'activer avec systemctl enable systemd-tmpfiles-setup.service
. Si vous voulez utiliser screen dans un conteneur docker , vous devez soit obtenir systemd en cours d'exécution dans votre image de conteneur ou vous devez exécuter systemctl start systemd-tmpfiles-setup.service
ou /etc/init.d/screen-cleanup start
( comme suggéré par Huey ) chaque fois que vous vous êtes connecté à votre conteneur.
Détails: Depuis Debian Stretch, le script de démarrage /etc/init.d/screen-cleanup
n'est pas exécuté car, par défaut, ce service est masqué (/lib/systemd/system/screen-cleanup.service -> /dev/null
). Systemd l'ignore donc.
Au lieu de cela, systemd-tmpfiles-setup.service
crée /run/screen
au démarrage, comme configuré dans /usr/lib/tmpfiles.d/screen-cleanup.conf
: d /run/screen 0775 root utmp