Ce message peut vous aider. La recommandation est:
- arrière-plan du processus (avec Ctrl-Z, puis bg )
- exécutez disown -h% [jobid] (probablement un bash-ism, vous devrez donc traduire pour tcsh)
La mauvaise nouvelle , bien sûr, est que le bg devrait être fait dans le même shell que le processus est en cours d'exécution ... mais ... il pourrait déjà être en arrière-plan.
La très mauvaise nouvelle est que l' appel désavoué devra peut-être être effectué dans le même shell. Dans ce cas, oui, vous êtes foutu. Mais je ne suis pas sûr, peut-être que root peut le déconnecter de force.
Hmm. Bonne nouvelle possible - tcsh fait automatiquement le désaveu :
Si tcsh se ferme anormalement, il annule automatiquement les travaux en arrière-plan à sa fermeture.
Donc, si votre processus à long terme est déjà en arrière-plan, tuer son parent tcsh devrait lui permettre de continuer. Le processus est maintenant déconnecté du terminal de démarrage. (Sinon, voir "mauvaises nouvelles" ci-dessus.)
Malheureusement, ce n'est pas un écran, il n'y a donc pas de véritable reconnexion. Vous pouvez le simuler avec gdb peut-être (encore une fois, à partir du premier lien):
[...] avec quelques hacks sales, il n'est pas impossible de rouvrir un processus stdout / stderr / stdin.
Ainsi, vous pouvez toujours créer une fenêtre d'écran vide (par exemple, qui exécute le mode veille).
Et puis utilisez gdb par exemple pour vous attacher au processus, faites un appel close (0)
call close (1)
call close (2)
call open ("/ dev / pts / xx", ...)
call dup (0)
appeler dup (0)
detach
La sortie du processus irait à l'écran. Il ne serait pas attaché à ce terminal d'écran, donc par exemple [sic] tuerait la commande "sleep", pas le processus, mais cela pourrait être suffisant pour l'OP.
Je me demande s'il ne devrait pas y avoir "call dup (1)" et "call dup (2)" dans ce processus aussi ...