Isso aconteceu comigo quando fiz uma atualização que alterou o padrão SCREENDIR com várias sessões ativas. Como você, eu não poderia convencê-lo a regenerar o fifo (provavelmente há um relatório de bug que vale a pena arquivar em algum lugar), então o que acabei fazendo foi usar reptyr para fazer a transição de tudo o que for relevante para uma nova sessão. É tedioso, mas me permitiu preservar meu estado (assim como aprender um pouco). Aqui estão os passos que usei; isso provavelmente pode ser simplificado ou com script:
- Encontre a tela PID que você deseja fazer a transição e obtenha sua lista de processos filhos (usei
pstree -ps $PID) - Para cada processo filho, obtenha seu PID e ...
- Se for uma concha ...
- sem mais nada em execução,
reptyr $PID - com um processo normal em execução, SIGTSTP it (^ z ou
kill -TSTP $PID),bgit,disown $PIDit ereptyr $PID; fg.
- sem mais nada em execução,
- Se houver um processo com crianças ,
reptyr -T $PID - Se houver um processo normal,
reptyr $PID
- Se for uma concha ...
Isso pode não ser infalível, e acabei com shells-in-shells e coisas assim, mas poderia ser pior.