Comment combiner une horloge time réel avec la queue -F

Je cours toujours la tail -F pour surveiller un journal dans une window de terminal. Le journal a une date UTC au début de chaque input:

 [08-Jan-2013 16:24:22] Yo! 

Quand je regarde ma window de journal, je dois savoir quel sont les inputs. Je préférerais ne pas avoir à regarder mon horloge locale et faire les calculs. J'ai donc pensé qu'il serait cool d'avoir un affichage de l'horloge en time réel dans la window avec le passage de la tail .

Ce que je viens de faire, c'était une boucle d'arrière-plan qui faisait echo la date et un return de chariot. Lorsqu'une input de journal est écrite, la tail écrase l'horloge.

 while true; do echo -ne `date +"[%d-%b-%Y %H:%M:%S]"`"\r"; sleep 1; done & log -F /path/to/log 

Cela fonctionne essentiellement, mais je m'inquiète de ce qui se passe lorsque les sorties de la tail et de la date produisent la production en même time. Je ne veux pas que mon sharepoint vue sur le journal soit gâté par le return du chariot.

Comment puis-je multiplex ces sorties set afin qu'elles ne puissent pas entrer en collision? Est-ce un travail pour l' screen ou autre chose?

Le journal est sur un server Debian distant. Mon post de travail exécute OSX. Je me connecte via SSH pour exécuter le script ci-dessus.

Vous pouvez utiliser l'option -s de la queue afin que votre queue dort pendant 5 secondes:

 -s, --sleep-interval=S with -f, sleep for approximately S seconds (default 1.0) between iterations. tail -s 5 -f /var/log/messages 

Ou la command de montre vous montrera la date:

 watch --interval=5 tail /var/log/messages Every 5.0s: tail /var/log/messages Tue Jan 8 17:52:41 2013 

Jan 8 17:52:34 localhost kernel: NOUVEAU: IN = eth0 OUT = MAC = 00: 60: 56: 73: 14: 6b: 00: 50: 5b: 93: 49: 5d: 08: 00 SRC = 10.0. 0,2 DST = 10,0.0.1 LEN = 60 TOS = 0x00 PREC = 0x00 TTL = 64 ID = 29070 DF PROTO = TCP SPT = 50561 DPT = 25 WINDOW = 5840 RES = 0x00 SYN URGP = 0

Une autre solution (pas particulièrement agréable) utilisant la command strace-t:

  strace -t tail -f /var/log/messages 

Enfin, vous pouvez écrire votre propre command de queue modifiée dans python / perl / ruby:

https://stackoverflow.com/questions/136168/get-last-n-lines-of-a-file-with-python-similar-to-tail

et ajoutez simplement la date / l'heure à la ligne de sortie.

Vous voudrez peut-être jeter un coup d'oeil à multitail ; il prend en charge plusieurs windows avec des files journaux séparés ou fusionnés, des coloris regex par type de file, des options d'insertion de mots, une montre de nom de file (utile pour les files enregistrés) et plus encore.

Oh, et une horloge sur la ligne d'état.