Comme vous le savez peut-être, la commande cat est utilisée pour afficher tout le contenu d'un fichier via une entrée standard. Mais dans certains cas, nous devons imprimer la dernière partie du fichier. Sous Linux et Unix, la commande tail est utilisée pour afficher les 10 dernières lignes (par défaut) d'un fichier en utilisant la sortie standard.
La commande Tail est couramment utilisée pour regarder et analyser les fichiers car elle peut afficher les lignes nouvellement ajoutées. Cette fonctionnalité est principalement utilisée pour afficher les journaux ou d'autres fichiers mis à jour de temps en temps.
Dans ce tutoriel, nous apprenons à utiliser la commande tail sous Linux avec quelques exemples pratiques. Nous passerons également en revue les options de queue en détail.
Syntaxe de la commande Tail
La ligne suivante montre la syntaxe de la commande tail :
tail [OPTION]... [FILE]...
Sans aucune OPTION
ou FILE
, la commande tail accepte les entrées de STDIN. Donc, à STDIN, si vous entrez plus de 10 lignes, seules les 10 dernières lignes seront affichées où la commande head fait exactement le contraire de la commande tail.
La commande Tail peut accepter un ou plusieurs noms de fichiers d'entrée (FILE
).
1) Utiliser la commande tail pour afficher les dix dernières lignes d'un fichier
Sans aucune option, la commande tail affiche les 10 dernières lignes du fichier d'entrée.
Dans les exemples suivants, la commande tail affiche les 10 dernières lignes du fichier 'file1.txt' :
$ tail file1.txt
memtest86+_multiboot.bin
System.map-2.6.38-12-generic
System.map-2.6.38-13-generic
System.map-2.6.38-8-generic
vmcoreinfo-2.6.38-12-generic
vmcoreinfo-2.6.38-13-generic
vmcoreinfo-2.6.38-8-generic
vmlinuz-2.6.38-12-generic
vmlinuz-2.6.38-13-generic
vmlinuz-2.6.38-8-generic
2) Afficher un nombre spécifique (limité) de lignes
Si vous souhaitez afficher uniquement un nombre spécifique de lignes, vous devez utiliser l'option -n.
Nous pouvons utiliser trois options différentes pour limiter le nombre de lignes.
Les trois commandes suivantes (-n100
, -n 100
, -100
) affiche les 100 dernières lignes du fichier '/var/log/apache2/error.log' :
$ tail -n100 /var/log/apache2/error.log
ou
$ tail -100 /var/log/apache2/error.log
ou
$ tail -n 100 /var/log/apache2/error.log
3) Comment afficher plusieurs fichiers
La commande Tail peut s'afficher à partir de plusieurs fichiers lorsqu'elle est donnée en argument. Ensuite, il sort les 10 dernières lignes de chaque fichier et avec un en-tête affichant le nom du fichier.
$ tail file1.txt file2.txt
==> file1.txt <==
memtest86+_multiboot.bin
System.map-2.6.38-12-generic
System.map-2.6.38-13-generic
System.map-2.6.38-8-generic
vmcoreinfo-2.6.38-12-generic
vmcoreinfo-2.6.38-13-generic
vmcoreinfo-2.6.38-8-generic
vmlinuz-2.6.38-12-generic
vmlinuz-2.6.38-13-generic
vmlinuz-2.6.38-8-generic
==> file2.txt <==
smi.conf
snmp
sound
speech-dispatcher
ssh
ssl
sudoers
sudoers.d
sysctl.conf
tr command
Si vous ne souhaitez pas imprimer les en-têtes ('==> file1.txt <==' et '==> file2.txt <=='), vous pouvez utiliser le mode silencieux avec -q
, --quiet
ou --quiet
option. Cette option peut être utilisée pour combiner des fichiers.
$ tail -q file1.txt file2.txt
Si vous voulez toujours imprimer les en-têtes, même lorsqu'un seul nom de fichier est fourni en argument, vous pouvez utiliser -v
ou --verbose
possibilité
$ tail -v file1.txt
4) Afficher les derniers octets spécifiques d'un fichier
Pour afficher les derniers octets spécifiques du fichier, utilisez -c
ou --bytes
option.
La commande tail suivante imprime les 30 derniers octets du fichier file2.txt :
$ tail -c 30 file2.txt
sudoers.d
sysctl.conf
sysctl.d
Alternativement, vous pouvez utiliser -c +number
pour tout sortir à partir de l'octet number
.
$ tail -c +300 file1.txt
5) Surveiller les modifications de fichiers
Utilisez -f
ou --follow
option de surveillance des modifications de fichiers. Cette option est très couramment utilisée pour surveiller et dépanner les fichiers journaux.
La commande suivante affichera les 10 dernières modifications sur le terminal pour le fichier '/var/log/Xorg.1.log'.
$ tail -f /var/log/Xorg.1.log
[ 86.774] (**) Option "xkb_layout" "us"
[ 86.774] (**) Option "xkb_options" "terminate:ctrl_alt_bksp"
[ 86.774] (II) Toshiba input device: (II) is tagged by udev as: Keyboard
[ 86.774] (II) Toshiba input device: (II) device is a keyboard
[ 88.453] (II) Display (Seiko/Epson (DFP-0)) does not support NVIDIA 3D
[ 88.453] (II) Vision stereo.
[ 102.094] (II) Display (Seiko/Epson (DFP-0)) does not support NVIDIA 3D
[ 102.094] (II) Vision stereo.
[ 540.435] (II) Axis 0x1 value 1158 is outside expected range
See https://wayland.freedesktop.org for details
Le -f
L'option attendra toujours les données ajoutées et ne se fermera pas d'elle-même. Vous devez appuyer sur Ctrl+C
pour quitter.
Essayons d'afficher les 3 dernières lignes d'une sortie de queue en utilisant le -n
et f
options.
$ tail -n3 -f /var/log/Xorg.1.log
[ 102.094] (II) Vision stereo.
[ 540.435] (II) Axis 0x1 value 1158 is outside expected range
See https://wayland.freedesktop.org for details
Utiliser le -fq
option, vous pouvez surveiller les modifications de plusieurs fichiers.
$ tail -fq /var/log/Xorg.1.log file2.txt
Avec le -s
ou --sleep-interval
(la valeur par défaut est 1 seconde), vous pouvez ajuster l'intervalle de veille entre les itérations.
$ tail -f -s 4 /var/log/Xorg.1.log
Comme mentionné ci-dessus avec le -f
option le shell ne se ferme pas tout seul, mais vous pouvez dire à la commande de se terminer après la mort d'un processus avec le --pid
option.
La commande se terminera dès que le processus avec le PID 4309 meurt.
$ tail -f file2.txt --pid=4309
Avec le --retry
option, vous pouvez continuer à essayer d'ouvrir un fichier même lorsqu'il est, ou devient, inaccessible. Une fois accessible, la sortie sera affichée.
$ tail -f file2.txt --retry
6) Utiliser la queue avec des tuyaux
La commande tail peut être redirigée vers/depuis d'autres commandes pour produire des résultats optimisés.
L'exemple suivant utilise la commande ls pour lister tous les fichiers et répertoires et lister tous les répertoires en haut.
$ ls -l /etc | tail | sort
drwxr-xr-x. 2 root root 4096 Mar 3 08:15 yum.repos.d
drwxr-xr-x. 2 root root 4096 Mar 3 08:17 yum
drwxr-xr-x. 2 root root 4096 Sep 25 14:54 xinetd.d
drwxr-xr-x. 4 root root 4096 Sep 25 14:54 xdg
drwxr-xr-x. 6 root root 4096 Sep 25 14:54 X11
lrwxrwxrwx. 1 root root 12 Dec 19 15:43 yum.conf -> dnf/dnf.conf
-rw-r--r--. 1 root root 1204 Nov 11 19:08 virc
-rw-r--r--. 1 root root 1982 Nov 11 19:08 vimrc
-rw-r--r--. 1 root root 28 Sep 25 14:51 vconsole.conf
-rw-r--r--. 1 root root 642 Dec 9 2016 xattr.conf
Si vous souhaitez surveiller les demandes pour un type de fichier particulier, utilisez la commande suivante :
$ tail -f /var/log/apache/myvirtualhost.log | grep .jpg
Dans l'exemple suivant, la commande de queue de sortie est redirigée et, à l'aide de la commande de tri, obtenez le contenu de 'continent.txt' trié par ordre alphabétique.
$ tail -n 5 continent.txt | sort
Africa
Antarctica
Asia
Australia
Europe
Conclusion
Nous avons maintenant vu comment utiliser la commande tail et ses options pour afficher les dernières lignes d'un fichier texte. J'espère que vous avez apprécié la lecture et s'il vous plaît laissez vos suggestions dans la section des commentaires ci-dessous.