Esta postagem pode ajudar. A recomendação é:
- contextualize o processo (com Ctrl-Z e bg )
- execute disown -h% [jobid] (provavelmente um bash-ism, então você terá que traduzir para tcsh)
A má notícia , é claro, é que o bg precisa ser feito no mesmo shell em que o processo está sendo executado ... mas ... pode já estar em segundo plano.
A notícia muito ruim é que a chamada disown pode precisar ser feita no mesmo shell. Nesse caso, sim, você está ferrado. Mas não tenho certeza, talvez o root possa forçar a desconexão.
Hmm. Possíveis boas notícias - tcsh faz o rejeitar automaticamente:
If tcsh exits abnormally, it disowns jobs running in the background automatically when it exits.
Portanto, se seu processo de longo prazo já estiver em segundo plano, a eliminação de seu pai tcsh deve permitir que ele continue. O processo agora está desconectado do terminal inicial. (Se não, veja "más notícias" acima.)
Infelizmente, não é tela, então não há uma reconexão real. Você pode fingir com o gdb talvez (novamente, a partir do primeiro link):
[...] with some dirty hacks, it is not impossible to reopen a process' stdout/stderr/stdin.
So you could still create a blank screen window (for instance that runs sleep).
And then use gdb for instance to attach to the process, do some call close(0)
call close(1)
call close(2)
call open("/dev/pts/xx", ...)
call dup(0)
call dup(0)
detachThe process' output would go to screen. It wouldn't be attached to that screen terminal, so for instance[sic] would kill the "sleep" command, not the process, but that could be enough for the OP.
Gostaria de saber se não deveria haver "call dup (1)" e "call dup (2)" nesse processo também ...