Je cherche un moyen de supprimer le contenu du fichier journal en ne laissant que la queue définie. En deux étapes, c'est assez simple:
tail -n1000 alert_migtst.log > alert_migtst.tail
mv -f alert_migtst.tail alert_migtst.log
Existe-t-il un moyen d’obtenir la même chose avec une seule commande, entre autres raisons d’éviter une éventuelle perte de lignes?
Vous pouvez essayer d'utiliser une éponge que vous pouvez installer avec le paquet
moreutils
. Il vous permet de rediriger la sortie sur le même fichier (sinon vous le supprimez).En règle générale, entraînez-vous avec toutes les solutions que vous avez trouvées avant de les utiliser sur des fichiers critiques.
la source
sed
si la taille change entre-temps, il agit. Je ne sais pas trop dans les détailssponge
aussi :) mais il semble agir de manière plus similaire à celle que vous aviez auparavant. ps> up-vote lased
réponse montre la guérison dans la façon dont est fait.Vous pouvez utiliser Vim en mode Ex:
1,-1000
sélectionner tout sauf les 1000 dernières lignesd
effacerx
sauver et fermerla source