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
),bg
it,disown $PID
it 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.