290 votes

Récupérer les 100 dernières lignes de logs

J'ai besoin de récupérer les 100 dernières lignes des journaux du fichier journal. J'ai essayé la commande sed

sed -n -e '100,$p' logfilename

Veuillez m'indiquer comment je peux modifier cette commande pour récupérer spécifiquement le fichier dernier 100 lignes.

0 votes

Cela est mentionné dans le manuel : gnu.org/software/sed/manual/html_node/tail.html#tail comment sed peut émuler tail.

1 votes

Tail -f -n 100 logfilename

535voto

Steephen Points 7256

Vous pouvez utiliser queue comme suit :

tail -100 <log file>   > newLogfile

Maintenant les 100 dernières lignes seront présentes dans newLogfile

26 votes

Notez que certaines versions plus récentes de tail nécessitent la syntaxe tail -n 100 <filename> ...

49voto

FullStack Points 648

"tail" est une commande qui permet d'afficher la dernière partie d'un fichier, l'utilisation des commutateurs appropriés disponibles nous aide à obtenir une sortie plus spécifique. le commutateur le plus utilisé pour moi est -n et -f.

SYNOPSIS

tail [-F | -f | -r] [-q] [-b nombre | -c nombre | -n nombre] [fichier ...]

Ici

-n nombre : L'emplacement est le nombre de lignes.

-f : L'option -f fait en sorte que tail ne s'arrête pas lorsque la fin du fichier est fichier, mais plutôt d'attendre que des données supplémentaires soient ajoutées au fichier. entrée. L'option -f est ignorée si l'entrée standard standard est un tube, mais pas si c'est un FIFO.

Récupérer les 100 dernières lignes de logs

To get last static 100 lines  
     tail -n 100 <file path>

To get real time last 100 lines
     tail -f -n 100 <file path>

22voto

skwllsp Points 9661

Regardez, le sed script qui imprime les 100 dernières lignes que vous pouvez trouver dans la documentation de sed ( https://www.gnu.org/software/sed/manual/sed.html#tail ) :

$ cat sed.cmd
1! {; H; g; }
1,100 !s/[^\n]*\n//
$p

$ sed -nf sed.cmd logfilename

Pour moi, c'est beaucoup plus difficile que ton script, donc

tail -n 100 logfilename

est beaucoup plus simple. Et il est assez efficace, il ne lira pas tous les fichiers si ce n'est pas nécessaire. Voir ma réponse avec le rapport strace pour tail ./huge-file : https://unix.stackexchange.com/questions/102905/does-tail-read-the-whole-file/102910#102910

9voto

mdsadiq Points 56

Je sais que c'est très vieux, mais, pour ceux que ça peut aider.

less +F my_log_file.log

ce n'est que la base, avec moins vous pouvez faire des choses beaucoup plus puissantes. une fois que vous commencez à voir les journaux, vous pouvez faire des recherches, aller au numéro de ligne, rechercher des motifs, beaucoup plus et c'est plus rapide pour les gros fichiers.

c'est comme vim pour les logs [tout à fait mon avis].

la documentation du bailleur original : https://linux.die.net/man/1/less

moins d'antisèche : https://gist.github.com/glnds/8862214

0 votes

Une caractéristique importante de "less" est qu'il ne charge pas tout le fichier en mémoire, donc l'ouverture de grands fichiers avec lui est indiquée.

3voto

Akshay Jangir Points 1
len=`cat filename | wc -l`
len=$(( $len + 1 ))
l=$(( $len - 99 ))
sed -n "${l},${len}p" filename

la première ligne prend la longueur (Total des lignes) du fichier puis +1 dans le total des lignes après cela, nous devons attraper 100 enregistrements, donc -99 de la longueur totale. Ensuite, il suffit de mettre les variables dans la commande sed pour récupérer les 100 dernières lignes du fichier.

J'espère que cela vous aidera.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X