PDA

View Full Version : Recuperare output da processo in esecuzione


cionci
04-06-2009, 18:45
Ho un processo in esecuzione, lanciato da un'altra shell. Devo recuperare l'output attuale di questo programma. Il programma fa uso ncurses.
In pratica possiamo fare l'esempio di top. Top gira continuamente in memoria ed io devo recuperarne l'output.

Avete qualche idea ?

DanieleC88
04-06-2009, 19:00
Ho provato:
top | tee /tmp/outfile

E su un'altra shell:
cat /tmp/outfile

Riesco a vedere bene la schermata di top. Ovviamente cat termina dopo aver stampato la prima schermata, non rimane continuamente a monitorarlo, ma può essere un inizio. :boh:

cionci
04-06-2009, 19:23
Diciamo che io non posso intervenire sul file lanciato. L'output del file lanciato deve essere comunque disponibile nell'altra shell ;)

Caldwell83
05-06-2009, 11:37
la shell che lancia questo programma come fa a recuperare l'output?

Tony Lio
05-06-2009, 11:53
prova con logger ;)

cionci
05-06-2009, 12:02
la shell che lancia questo programma come fa a recuperare l'output?
Il programma viene lanciato tramite GNU screen.
Quindi si passa all'output del programma con il comando screen -r

Caldwell83
05-06-2009, 12:55
Potresti lanciare il programma di cui vuoi tracciare l'output in background ridirgendo l'output in un file.
Cosi da riuscire a vederlo da qualunque shell tu voglia.
Con top questo non funziona perchè in background si stoppa, ma potrebbe funzionare con il tuo programma.

cionci
05-06-2009, 13:22
Diciamo che l'altra gestione del programma la voglio lasciare così. Mi ci trovo bene. Al massimo posso cambiare qualcosa nell'avvio del programma, ma comunque lo voglio lasciare accessibile in background tramite GNU screen.

Hell-VoyAgeR
06-06-2009, 14:48
screen -x
ti permette di "condividere" la sessione screen.

Io lo uso per la "teleistruzione" dei sistemisti in erba :p

cionci
06-06-2009, 15:02
Ok, su questo ci siamo, ma a me serve l'output per riprenderlo da un altro programma, quindi mi serve o su file o in una variabile d'ambiente ;)

Ho abilitato il logging di screen e sembra funzionare, ora però il problema si sposta su altri lidi, in quanto il programma è un programma ncurses.
Ovviamente nell'output ci sono quintali di informazioni (mi immagino relative alla gestione del terminale, colori e roba del genere). Io devo interpretare tutto per fare uno strip del "contorno" dalle informazioni testuali vere e proprie.

Giusto per provare:

screen -L top

Premere q dopo qualche secondo.

Editare screenlog.0 (o .1)

sacarde
06-06-2009, 16:43
@Hell-VoyAgeR

non ho capito come fai a condividere la consolle

tramite internet?

Hell-VoyAgeR
06-06-2009, 18:05
Ok, su questo ci siamo, ma a me serve l'output per riprenderlo da un altro programma, quindi mi serve o su file o in una variabile d'ambiente ;)

Ho abilitato il logging di screen e sembra funzionare, ora però il problema si sposta su altri lidi, in quanto il programma è un programma ncurses.
Ovviamente nell'output ci sono quintali di informazioni (mi immagino relative alla gestione del terminale, colori e roba del genere). Io devo interpretare tutto per fare uno strip del "contorno" dalle informazioni testuali vere e proprie.

Giusto per provare:

screen -L top

Premere q dopo qualche secondo.

Editare screenlog.0 (o .1)

Ecco questo era un piccolo particolare che non avevo afferrato.

@Hell-VoyAgeR

non ho capito come fai a condividere la consolle

tramite internet?

Si, non spesso ma generalmente funziona cosi': mi chiamano, entro nel server da remoto, faccio collegare in -x quello che sta dall'altra parte e "mostro" come fare le operazioni richieste.

sacarde
06-06-2009, 19:38
@Hell-VoyAgeR

scusa... ma... metti in condivisione una shell ?
in che modo?

cionci
06-06-2009, 20:02
Credo che lanci una shell con screen su un account condiviso ;)
Poi dopo entrambi usano screen per accedere alla shell.