Come faccio a ridurre un nome file anziché un numero di inode?


11

Ho un software che ruota i suoi file di registro al riavvio. Tuttavia, durante lo sviluppo, lo riavvio molto, quindi vorrei monitorare l'ultimo file di registro in qualsiasi momento.

Se inizio lessnormalmente con + less program.loge premo Shift+ fto tail, quando il file di registro viene ruotato, continuo a monitorare il vecchio file di registro. Suppongo che ciò avvenga perché il numero di inode rimane lo stesso e lessha un handle di file aperto per quell'inode.

È possibile monitorare l'attività più recente su qualunque file di registro sia attualmente chiamato program.log?

In particolare, sto lavorando su Sun OS, quindi una soluzione che funzioni lì sarebbe l'ideale.


forse tail -F program.log | lessfunzionerà
sendmoreinfo,

tail -f program.log hai provato questo?
Rahul Patil,

Risposte:


17

Usa less --follow-namese la tua versione lesslo supporta. Tale opzione è stata introdotta nella versione 416.


Risposta eccellente. Sia Solaris 10 che Solaris 11 utilizzano meno versione 436, quindi questa opzione è effettivamente disponibile.
unixhacker2010,

5

L' lessopzione --follow-nameè solo una parte della soluzione;
Per sostituire tail -F, è necessario un altro argomento:

less --follow-name +F file.log

L'opzione da sola come less --follow-name file.lognon inizia effettivamente dopo gli aggiornamenti dei file. È necessario entrare nel modo seguente premendo ShiftF.
(Esci dalla modalità per navigare ControlC.)

Invece di seguire il file, --follow-name modifica il comportamento di less.
Rende la chiave di comando ShiftFall'interno di lessfollow basata sul nome del file, non sul descrittore di file.

Inoltre, non esiste un'opzione normale per l'avvio lessin modalità follow.
Ma puoi usare la riga di comando per dare i tasti da eseguire dopo l'avvio, aggiungendoli come prefisso +.
La combinazione dell'opzione modificatore con +F, lessinizierà effettivamente nella modalità di follow-up (modificata).

Utilizzare da +Fsolo per l'equivalente di plain tail -f:

less +F file.log

1

Ho appena trovato la risposta in questo U&L Q&A intitolato: Come fare un tail -ffile di log ruotato? .

Utilizzando tail:

(se l'installazione di GNU tail sul tuo sistema è un'opzione)

tail -F program.log

Dalla pagina man tail :

   -f,      --follow[={name|descriptor}]
            output appended data as the file grows; -f, 
            --follow, and --follow=descriptor are equivalent

   -F       same as --follow=name --retry

   --retry  keep  trying  to  open  a  file even when it is or becomes
            inaccessible; useful when following by name, i.e., with
            --follow=name

La chiave è l' --retryinterruttore. Questo dice al tailcomando di continuare a riprovare a seguire un file per nome. L' -Finterruttore fa sia a -fche a --retry.

utilizzando less

Come sottolineato da @StephaneChazela nei commenti, il seguente non funzionerà.

tail -F program.log | less

L'unica altra opzione che hai è quella di utilizzare meno direttamente supponendo che supporti direttamente lo --follow-nameswitch e lessil file, rinunciando a usarlo tailcompletamente.

less --follow-name program.log

A volte non mi piace molto il sistema operativo Sun ...
Alex Chamberlain,

Sono d'accordo, ho lavorato per anni, ti fa impazzire che gli strumenti abbiano 10 anni per alcune app. Non ha senso. Questo sito è stato prezioso per mantenere la sanità mentale su Solaris: sunfreeware.com/introduction.html
slm

se vuoi più sanità mentale, dai un'occhiata a pkgsrc.org :)
sendmoreinfo,

Non funzionerà bene. Perché si lessbloccherà se si fa "G" pr "F". Che puoi interrompere facendo "Ctrl-C", ma poi uccide la coda. È quindi possibile immergere la coda in Ctrl-C, ma non è ancora molto utilizzabile.
Stéphane Chazelas,

Per quanto riguarda GNU tail: controlla questo per informazioni su quali strumenti dovrebbero essere disponibili su qualsiasi host Solaris. (In realtà, la coda GNU è presente di default in Solaris 11). Gli amministratori di sistema Solaris spesso rendono più difficile per i loro utenti perché lasciano l'installazione all'installazione molto spenta mentre gli strumenti GNU per Solaris sono attualmente disponibili direttamente da Oracle o in alcuni casi parte dell'installazione predefinita. Nessun motivo per non renderlo parte dell'installazione. Nessun motivo per andare ai repository "non ufficiali". Vedi link.
unixhacker2010,
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.