Schermare un processo in esecuzione


24

A volte mi dimentico di eseguire un programma sotto una sessione dello schermo e non riesco a fermarlo nel mezzo, e so che ci vorrà molto tempo.

C'è un modo per schermare un processo già in esecuzione senza riavviarlo?

Risposte:


12

Ho trovato questa risposta su serverfault dal conte :

Tuttavia, per il vostro problema attuale, c'è un'altra cosa che si potrebbe provare: dopo aver lanciato il vostro lavoro dal terminale, sfondo digitando ctrl- ze poi bg.
Dopo di che, staccare il lavoro dalla shell genitore E '- in bash: disown -h %<jobid>. Successivamente, è possibile chiudere in sicurezza il terminale e il lavoro continuerà a essere eseguito.

E questo dalla stessa domanda di Rob Wells :

$ screen -S my_process
$ retty $(pgrep my_process)
/redraw


C'è un modo per riportare in primo piano il lavoro? 'schermo' quindi 'fg 1' non funziona per me
Putnik

@Putnik - hai fatto gli altri passaggi come descritto?
Warren,

7

Trovato un duplicato in ServerFault .

Un'altra soluzione non trovata in quel post sta usando retty dopo aver iniziato una sessione di schermo.


5
Ho cancellato la mia risposta; puoi (e dovresti) accettare la tua risposta dopo 2 giorni. Sentiti libero di citare qui le parti pertinenti, poiché i "duplicati" tra siti non sono in realtà ingannevoli a causa del pubblico diverso.
Jeff Atwood,

4
Ma non hai citato le parti rilevanti, come suggerito da Jeff. =)
David dice di ripristinare Monica il

5

Dai un'occhiata a reptyr , che fa esattamente questo. La pagina di github contiene tutte le informazioni.

reptyr - Uno strumento per "ripassare"

programmi.

reptyr è un'utilità per prendere un programma in esecuzione esistente e collegarlo a un nuovo terminale. Ha iniziato un processo di lunga durata su ssh, ma devi partire e non vuoi interromperlo? Basta avviare una schermata, usare reptyr per afferrarla, quindi uccidere la sessione ssh e andare a casa.

USO

reptyr PID

"reptyr PID" afferrerà il processo con ID PID e lo collegherà al terminale corrente.

Dopo il collegamento, il processo prenderà l'input e scriverà l'output sul nuovo terminale, inclusi ^ C e ^ Z. (Sfortunatamente, se lo sfondo, dovrai comunque eseguire "bg" o "fg" nel vecchio terminale. Questo è probabilmente impossibile da risolvere in modo ragionevole senza patchare la shell.)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.