2012-07-25 13 views
5

Memorizzo i dati da un output nc in un file 24 ore su 24. È un datalogger di temperatura. Questo file amroutput sarà molto grande nel tempo. (Ogni 10 secondi una linea). Per un'app avrò l'ultima voce in un file amr_last_output. Quindi io uso:unix redirect tail to file

tail -f -n1 amroutput > amr_lastoutput. 

Con > sarò sovrascrivere il file amr_lastoutput ogni volta quando Tal fare un'uscita. Su mac osx siamo l'output di tail per il file di output, come nel comando >>. Cosa posso fare?

Grazie per le risposte!

+2

Non sono sicuro di aver capito, stai dicendo che '>>' non fa quello che ti aspetteresti sul tuo sistema Unix? Dovrebbe funzionare come su Mac OSX (aggiungendo al file). –

+0

Probabilmente non vuoi usare '-f' (segui) per questo. – Thor

+0

Avrò una modalità di sovrascrittura (>) per l'output di coda su un file, non la modalità di aggiunta (>>). ci sono due processi in backround, il primo: 'nc 192.168.xx 10001> amroutput &' e il secondo: tail -f -n1 amroutput> amr_lastoutput & ' – steff

risposta

0

Sto aspettando la tua conferma per il mio commento precedente. Ma nel frattempo, assumerò l'affermativo e ti darò una soluzione suggerita.

Posizionamento a! al termine della> >> o redirect si spegne il default "noclobber" interruttore che impedisce di sovrascrivere un file esistente:

tail -f -n1 amroutput >! amr_lastoutput 

Se questo non funziona per voi, fatemi sapere e possiamo provare qualcosa di diverso .

+0

scusa, non ho confermato il tuo commento. coda senza -f e il '>!' inoltre non funziona. – steff

+1

il>! opzione memorizza l'output di tail in un file chiamato '!' in modalità di aggiunta – steff

0

il reindirizzamento '>' di coda solo una volta sovrascrive su un file di output. Io uso il ciclo while con sleep ed eseguo periodicamente il comando tail.

Grazie per tutto!