2013-07-08 10 views
14

Ho provato a eseguire il piping htop in un file di testo (ad esempio htop > text.txt) ma mi dà un testo confuso dalla formattazione delle stringhe (vedere di seguito). C'è un modo per ottenere un output più leggibile e leggibile?output htop in file leggibile dall'uomo

^[7^[[?47h^[[1;30r^[[m^[[4l^[[?1h^[=^[[m^[[?1000h^[[m^[[m^[[H^[[2J^[[1B ^[[36m1 ^[[m^[[1m[^[[m^[[32m||||||||||^[[31m||||||||||^[[30m^[[1m               \ 
    22.2%^[[m]^[[m  ^[[36mTasks: ^[[1m159^[[m^[[36m total, ^[[32m^[[1m5^[[m^[[36m running^[[3;3H2 ^[[m^[[1m[^[[30m                    \ 
     0.0%^[[m]^[[m  ^[[36mLoad average: ^[[30m^[[1m1.11 ^[[m^[[m1.28 ^[[1m1.31 ^[[4;3H^[[m^[[36m3 ^[[m^[[1m[^[[m^[[32m||||||||||^[[30m^[[1m              \ 
        11.1%^[[m]^[[m  ^[[36mUptime: ^[[1m9 days, 22:04:51^[[5;3H^[[m^[[36m4 ^[[m^[[1m[^[[30m                      0.0\ 
%^[[m]^[[6;3H^[[m^[[36m5 ^[[m^[[1m[^[[m^[[31m||||||||||^[[30m^[[1m                   11.1%^[[m]^[[7;3H^[[m^[[36m6 ^[[m^[[1m[^[[30m   \ 

risposta

41

htop autore qui.

No, non esiste un modo "carino" per ottenere l'output di htop convogliato in un file. Si tratta di un'applicazione interattiva che utilizza le routine di ridisegno del terminale per produrre la sua interfaccia (pertanto, il piping ha lo stesso senso di, ad esempio, piping vim in un file di testo - otterrete risultati simili).

Per ottenere le informazioni sui processi in un formato di testo, utilizzare "ps". Ad esempio, ps auxf > file.txt fornisce molte informazioni di facile analisi (o ps aux se non si desidera la formattazione ad albero - vedere man ps per ulteriori opzioni).

+3

Grazie per la risposta. Sto specificatamente cercando di trovare l'utilizzo per processore --- quale htop fa così bene. C'è un modo per accedere a questo tramite 'ps'? – DilithiumMatrix

+3

grazie, ma l'uomo esegue un'esportazione in qualche file per rendere la cosa più utilizzabile – themis

1

Installare Recode prima, lo codifica UTF-8:

$htop | recode utf-8 > test.txt 

Poi gatto il file e si dovrebbe essere buono.

+1

potrebbe essere una buona soluzione, ma quando l'ho provato, non è riuscito ad afferrare tutta la lista dei processi, e sempre visualizzato solo un sottoinsieme, non un modo affidabile per ottenere le informazioni. – fduff

9

Ho avuto la stessa necessità e ho finito per utilizzare top anziché htop a è fornisce una modalità batch tramite il flag -b.

-b: funzionamento in modalità batch Inizia Piano in 'modalità batch', che potrebbe essere utile per l'invio di uscita dall'alto verso altri programmi o in un file. In questa modalità, top non accetta input e viene eseguito fino al limite di iterazioni impostato con l'opzione della riga di comando '-n' o finché non viene eliminato.

Così, per esempio:

top -b -n 1 

Spero che questo aiuti anche se non utilizza htop.

-2

Questo può sembrare davvero noobish, tuttavia, se si dispone di più monitor si potrebbe avere htop in esecuzione mentre "registra il mio desktop" sta acquisendo quell'area. È più un video e potrebbe non essere d'aiuto con la ricerca e l'ordinamento, ma sarebbe bello e carino.

12

htop output ANSI escape code per utilizzare i colori e spostare il cursore sul terminale. C'è un ottimo programma a riga di comando aha che può essere usato per convertire ANSI in HTML.

Ubuntu/Debian installazione

apt-get install aha 

uscita Salva htop come file HTML

echo q | htop | aha --black --line-fix > htop.html 
+0

Semplicemente perfetto, grazie! – Shevchuk

+0

Vedere anche http://www.pixelbeat.org/scripts/ansi2html.sh – pixelbeat

+0

Per un esempio che utilizza ansi2html.sh, vedere https://news.ycombinator.com/item?id=10323333 e collegato esiste una richiesta di funzionalità per aggiungi un'opzione -b a htop per semplificare l'elaborazione in batch – pixelbeat

1

È inoltre possibile utilizzare lo script prima di eseguire htop in una modalità che reindirizza tempi ad un file per la successiva riproduzione. Nel regno di "ancora un altro lavoro in giro" e "buono per mostrare e raccontare".

script -t -a /var/tmp/script.htop.out 2> /var/tmp/script.htop.out.timings 
htop 

Poi per riprodurre

scriptreplay /var/tmp/script.htop.out.timings /var/tmp/script.htop.out 
2

Questo comando uscite testo. (Richiede l'installazione di aha e html2text.)

echo q | htop -C | aha --line-fix | html2text -width 999 | 
grep -v "F1Help\|xml version=" > file.txt 
+0

Qual è la differenza rispetto a https://stackoverflow.com/a/30224271/230468? – DilithiumMatrix

+0

@DilithiumMatrix Questo dà risultati in testo pulito senza tag HTML. – k0fe

+0

@DilithiumMatrix Hai dimenticato di aggiungere il comando di uscita. Modificato adesso. Hai provato? Questo è quello di cui hai bisogno? :) – k0fe