Je sais que je pouvais utiliser une commande sous Unix pour surveiller un fichier et voir les modifications qui y étaient écrites. Cela était particulièrement utile pour vérifier les fichiers journaux.
Savez-vous comment il s'appelle?
Je sais que je pouvais utiliser une commande sous Unix pour surveiller un fichier et voir les modifications qui y étaient écrites. Cela était particulièrement utile pour vérifier les fichiers journaux.
Savez-vous comment il s'appelle?
Réponses:
tail -F
suivra les noms de fichiers plutôt que les objets de fichier, ce qui est particulièrement utile en cas de rotation du fichier journal.
tailf
est maintenant obsolète et tail -f
sécurisé. (confirmez ceci sur votre système avec man tailf
.) Voir la documentation: man7.org/linux/man-pages/man1/tailf.1.html
Vous avez probablement voulu dire queue, selon la réponse de Jon Skeet
Un autre utile est regarder ; cela vous permet d'exécuter une commande périodiquement et de voir la sortie en plein écran. Par exemple:
regarder -n 10 -d ls -l / var / adm / messages
Lance la commande ls -l /var/adm/messages
toutes les 10 secondes et met en évidence la différence de sortie entre les exécutions suivantes. (Utile pour regarder à quelle vitesse un fichier journal grandit, par exemple).
inotifywait
de inotify-tools est utile si vous souhaitez exécuter une commande chaque fois qu'un fichier (ou un fichier dans un répertoire) change. Par exemple:
inotifywait -r -m -e modify /var/log |
while read path _ file; do
echo $path$file modified
done
path
n'est pas le meilleur choix pour un nom de variable. Sur zsh
, il semble que les vars d'environnement ne sont pas sensibles à la casse. Pour moi, définir les path
causes PATH
doit également l'être, ce qui signifie que rien ne sera exécuté tant que vous n'avez pas résolu le problème. Activé bash
, le réglage path
n'a aucun effet sur PATH
.
Je préfère utiliser less +FG
1 sur tail -f
parce que je trouve moi - même besoin de rechercher un fichier journal pour une erreur spécifique ou ID. Si je dois rechercher quelque chose, je tape ^C
pour arrêter de suivre le fichier et ?
pour commencer la recherche en arrière.
Les raccourcis clavier sont à peu près les mêmes que dans vi
. Toute commande peut être initialisée au démarrage en utilisant l' +
option:
+cmd Causes the specified cmd to be executed each time a new file is
examined. For example, +G causes less to initially display each
file starting at the end rather than the beginning.
Pour les journaux très longs, je trouve pratique d’utiliser l’ -n
option qui désactive la numérotation des lignes. De la page de manuel:
-n or --line-numbers
Suppresses line numbers. The default (to use line numbers) may
cause less to run more slowly in some cases, especially with a
very large input file. Suppressing line numbers with the -n
option will avoid this problem. Using line numbers means: the
line number will be displayed in the verbose prompt and in the =
command, and the v command will pass the current line number to
the editor (see also the discussion of LESSEDIT in PROMPTS
below).
1. Coup de chapeau à rgmarcha pour l'avoir signalé dans les commentaires.
alias
les options souhaitées pour ne pas avoir à les taper à chaque fois.
J'édite un fichier LaTeX et je souhaite également surveiller les modifications quelque part au milieu. J'ai préparé le petit script suivant qui m'a été utile. J'espère que ça va aussi être utile à quelqu'un d'autre.
#!/bin/bash
FILE="$1"
CMD="$2"
LAST=`ls -l "$FILE"`
while true; do
sleep 1
NEW=`ls -l "$FILE"`
if [ "$NEW" != "$LAST" ]; then
"$CMD" "$FILE"
LAST="$NEW"
fi
done
Enregistrez-le sous watch.sh
et faites-le chmod u+x watch.sh
. Puis je l'exécute comme suit:
./watch.sh file.tex pdflatex
Si vous souhaitez que la commande ne soit exécutée que si la modification a effectivement lieu, vous pouvez utiliser à la `md5sum "$FILE"`
place de `ls -l "$FILE"`
.
NEW=`tree -sDct . -I 'ignore_pattern|another_pattern'`
vous pouvez utiliser la commande tailf la plus simple possible
tailf logfile.log
Vous pouvez également utiliser inotifywatch / inotifywait qui se connecte au sous-système de noyaux inotify. De cette façon, vous pouvez également surveiller des éléments tels que "ouvrir", "fermer" ou "accès".
Mais si vous voulez simplement obtenir des lignes ajoutées à stdout, je suis d'accord sur la queue.
Si je veux être capable de chercher dans le fichier en plus de le mettre au bout, j'utilise moins avec la commande "F".
Lorsque vous utilisez tail, gardez à l'esprit que des arguments supplémentaires sont nécessaires si le fichier peut être remplacé ou remplacé par edit (mode par défaut pour vim: w).
tail -f fera en sorte que tail stocke le descripteur de fichier et le suive. Si le fichier est remplacé, le descripteur sera modifié. L'avantage de suivre le descripteur de fichier est que si le fichier est renommé, vous le suivrez toujours.
tail --follow = fera suivre le fichier nommé en le rouvrant périodiquement pour voir s'il a été remplacé.
--retry est une autre option utile si vous souhaitez modifier un fichier journal mais que le fichier n'a pas encore été créé.
tail -F est un raccourci pour --follow = --retry.
Oubliez tailf, diff est la commande que vous voulez. Voici un bon truc pour observer les différences telles qu'elles se produisent en temps réel (ou proches) entre 2 fichiers ou dans un fichier en cours d'écriture.
Vous pouvez utiliser ces méthodes pour modifier le comportement de n'importe quelle manière, par exemple écrire les modifications dans un fichier à conserver. Jouez avec l'intervalle de veille ou d'autres options pour les commandes ci-dessous.
Vous avez 1 fichier et vous souhaitez voir les modifications apportées:
Alors voici ce qu'il faut faire:
cp file file2
touch check-differences.sh
nano check-differences.sh
chmod 755 check-differences.sh
#!/bin/bash
diff file file2
cp file file2
watch ./check-differences
cela mettra à jour toutes les 2 secondes par défaut. Donc, si vous avez besoin de revenir en arrière et de les lire, écrivez la sortie de diff dans un fichier du script.
ou utilisez cron pour exécuter votre script régulièrement si vous n'avez pas besoin de voir la sortie.
Bien que tail -f somefile.txt
je continue à faire défiler de nouvelles données, je préfère parfoisless +G somefile.txt
aussi regarder un patch contenant les dernières données du fichier.