Y ahí nos quedamos. Y en parte me pasa por perezoso.
En la configuración que suelo emplear tengo dispuesto que, al entrar vía ssh a un sistema, se recupere la sesión de screen para seguir trabajando sin pausa.
De hecho la configuración es algo como:
# recover last screen session or create a new session
if [ "$SSH_CONNECTION" ]; then
if [ -z "$STY" ]; then
exec screen -d -R
fi
fi
Y siempre funciona a menos que el directorio de trabajo de screen no pueda crearse porque debería haberlo hecho el sistema y no ha sido así. He buscado en la red y he encontrado una respuesta perfecta para Debian 10 de la mano de Pieter Ennes que explica todo con una claridad pasmosa.
La solución, pues, consiste en lo siguiente:
$ sudo file /lib/systemd/system/screen-cleanup.service
/lib/systemd/system/screen-cleanup.service: symbolic link to /dev/null
$ sudo rm /lib/systemd/system/screen-cleanup.service
$ sudo systemctl enable screen-cleanup.service
$ sudo systemctl start screen-cleanup.service
Esto es, si el archivo screen-cleanup.service es un enlace a /dev/null el servicio está enmascarado por systemd y no es posible habilitarlo para que se cree en el proceso de arranque. Las llamadas a systemctl sirven para asegurarse de que esto es así.
Otro detalle, obviamente, es cambiar -por si acaso- el script de arranque para que en caso de fallo de screen no termine la conexión. Eliminar la llamada a exec es un primer paso, claro, pero también se puede hacer caso de la respuesta de Krease y emplear la variable SCREENDIR.
export SCREENDIR=$HOME/.screen
if [ ! -d $SCREENDIR ]; then
mkdir $SCREENDIR && chmod 0700 $SCREENDIR
fi