Comment obtenir moins pour rechercher plus rapidement avec des fichiers journaux volumineux?


15

J'ai souvent affaire à des fichiers journaux incroyablement volumineux (> 3 Go). J'ai remarqué que les performances de less sont terribles avec ces fichiers. Souvent, je veux sauter au milieu du fichier, mais quand je dis moins de sauter en avant de 15 lignes, cela prend quelques minutes.

Le problème que j'imagine est que moins de besoins pour analyser le fichier pour les caractères «\ n», mais cela prend trop de temps.

Existe-t-il un moyen de le faire rechercher simplement un décalage explicite? par exemple, chercher à octet compenser 1,5 milliard dans le fichier. Cette opération devrait être plus rapide de plusieurs ordres de grandeur. Si moins ne fournit pas une telle capacité, existe-t-il un autre outil qui le fait?


si vous effacez le fichier pour les caractères interdits, est-ce une supposition juste que vous purgerez les caractères susmentionnés après les avoir trouvés? Si oui, puis-je offrirperl -pi -e 's/\n//g;' <filename>
Mike Pennington

Désolé, écrémé n'était pas le bon mot. Aurait dû utiliser la numérisation. moins par conception recherche la nouvelle ligne (\ n). Cette analyse prend très longtemps sur des fichiers volumineux.
UsAaR33

Réponses:


21

vous pouvez moins vous arrêter de compter des lignes comme celle-ci less -n

Pour sauter à un endroit spécifique comme disons 50%, less -n +50p /some/logc'était instantané pour moi sur un fichier journal de 1,5 Go.

Modifier: pour un décalage d'octet spécifique: less -n +500000000P ./blah.log


1
Le comptage de lignes n'a jamais été le problème; Je pourrais simplement utiliser escp / ctrl-c pour cela. Mais c'est la vraie réponse; P passe à un décalage d'octet spécifique!
UsAaR33

5

Moins, étant un téléavertisseur, est intrinsèquement orienté ligne. Lorsque vous démarrez, si c'est un gros fichier, il dira "compter les numéros de ligne" et vous appuyez sur ÉCHAP pour arrêter cela, mais sinon, il fait des lignes. C'est ce que ça fait.

Si vous voulez sauter directement au milieu du fichier et sauter le début, vous pouvez toujours chercher au-delà du début; Je ferais quelque chose comme tail -c +15000000 /some/log | less.


3
vous voulez dire tail -c ...ou vous avez une lastcommande bizarre .
Alan Curry

Le problème avec cette stratégie est que vous ne pouvez plus chercher dans tout le fichier depuis moins (recherche de messages spécifiques, etc.)
Sekenre

@AlanCurry: C'est juste une orthographe alternative ... <grin>
womble

0

less semble avoir une petite surcharge des paramètres régionaux

Si vous utilisez uniquement des caractères ASCII, vous pouvez l'accélérer un peu en utilisant:

LC_ALL=C less big-log-file.log

Dans mon cas, le débit est passé de ~ 30M ib / s à ~ 50 Mib / s (le taux est lié au CPU)

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.