Question Commande Shell pour surveiller les modifications dans un fichier - Comment s'appelle-t-elle à nouveau?


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?


139
2018-04-30 21:00


origine




Réponses:


Tu veux dire

tail -f logfile.log

?

(Page de manuel pour tail)


188
2018-04-30 21:01



Oui, c'est le temps réel. - Adam Gibbins
Note: Si votre distribution fournit la commande tailf, utilisez-la de préférence à tail -f. tailf est plus efficace car il n’a pas besoin d’accéder au fichier surveillé s’il n’est pas écrit (les accès au sondage sont gênants si vous avez monté le système de fichiers avec la mise à jour atime). - Mihai Limbăşan
À super utilisateur j'ai trouvé une réponse recommander queue -F au lieu de -F , aussi - Rafa
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. - Amir Ali Akbari
Mise à jour, quelques années plus tard: tailf est maintenant obsolète et tail -f est sécurisé. (confirmez ceci sur votre système avec man tailf.) Voir la documentation: man7.org/linux/man-pages/man1/tailf.1.html - exp1orer


Vous avez probablement voulu dire la 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

Va exécuter la commande ls -l /var/adm/messages toutes les 10 secondes et mettez en surbrillance la différence de sortie entre les exécutions suivantes. (Utile pour regarder à quelle vitesse un fichier journal grandit, par exemple).


114
2018-04-30 21:07





Je préfère utiliser less +FG1 plus de tail -f parce que je dois rechercher dans un fichier journal une erreur ou un ID spécifique. Si j'ai besoin de chercher quelque chose, je tape ^C 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 à l’aide du bouton + 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 très longues bûches, je trouve pratique d’utiliser le -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. pointe du chapeau à rgmarcha pour le signaler dans les commentaires.


33
2018-04-30 23:44



N'oubliez pas de définir un aliasavec vos options souhaitées, de sorte que vous n'avez pas à les taper à chaque fois. - Michael Hampton♦
En fait, vous devriez généralement préférer les fonctions de shell aux alias dans la plupart des cas. - tripleee


inotifywait de inotify-outils est utile si vous souhaitez exécuter une commande à chaque fois qu'un fichier (ou un fichier d'un répertoire) change. Par exemple:

inotifywait -r -m -e modify /var/log | 
   while read path _ file; do 
       echo $path$file modified
   done

27
2018-06-02 12:13





La queue est géniale ... moins peut également être utilisé, commencez moins sur le fichier, c’est-à-dire moins mon fichier, puis appuyez sur F. Cela a moins d’effet de queue.


19
2018-04-30 21:04



moins + F monfichier le fera aussi - rgmarcha


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 fait 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 est effective, vous pouvez utiliser `md5sum "$FILE"` au lieu de `ls -l "$FILE"`.


12
2017-10-10 09:32



pour regarder des répertoires et leur contenu au lieu d'un seul fichier: NEW=`tree -sDct . -I 'ignore_pattern|another_pattern'` - Andy


vous pouvez utiliser le queue  commander son plus facile

tailf logfile.log

7
2017-10-15 13:26