Je pense que cette tâche peut être réalisée avec sed
sed -i '1,10d' myfile
supprimerait les lignes de 1 à 10 du fichier.
Je pense que tout le monde devrait au moins jeter un coup d'œil à ces doublures sed 1.
Notez que cela ne fonctionne pas pour les fichiers journaux qui sont activement ajoutés par une application (comme indiqué dans la question).
sed -i
créera un nouveau fichier et "supprimera" le fichier dans lequel l'écriture est en cours. La plupart des applications continueront à écrire des enregistrements de journal dans le fichier journal supprimé et continueront à remplir l'espace disque. Le nouveau fichier journal tronqué ne sera pas ajouté. Cela ne cessera que lorsque l'application est redémarrée ou est autrement signalée pour fermer et rouvrir ses fichiers journaux. À ce stade, il y aura un écart (enregistrements de journal manquants) dans le nouveau fichier journal s'il y a eu une activité consignable entre l'utilisation de sed et le redémarrage de l'application.
Un moyen sûr de le faire serait d'arrêter l'application, d'utiliser sed pour tronquer le journal, puis de redémarrer l'application. Cette approche peut être inacceptable pour certains services (par exemple, un serveur Web avec des exigences élevées en matière de débit et de continuité de service)
Non, les systèmes d'exploitation comme Linux, et ses systèmes de fichiers, ne prévoient pas la suppression de données dès le début d'un fichier. En d'autres termes, le point de départ du stockage d'un fichier est fixe.
La suppression de lignes depuis le début d'un fichier s'effectue généralement en écrivant les données restantes dans un nouveau fichier et en supprimant les anciennes. Si un programme a l'ancien fichier ouvert en écriture, la suppression de ce fichier est reportée jusqu'à ce que l'application ferme le fichier.
Comme l'ont noté les commentateurs, pour les raisons données dans ma phrase précédente, vous devez généralement coordonner l'élagage du fichier journal avec les programmes qui écrivent les journaux. La manière exacte de procéder dépend des programmes. Certains programmes fermeront et rouvriront leurs fichiers journaux lorsque vous leur enverrez un signal (par exemple HUP) et cela peut être utilisé pour empêcher l'écriture d'enregistrements de journal dans un fichier journal "supprimé", sans interrompre le service.
Il existe de nombreux utilitaires disponibles pour gérer la taille des fichiers journaux, par exemple logrotate
Certains programmes ont leurs propres utilitaires. Par exemple, le serveur Web Apache inclut un utilitaire rotatelogs.
Non. Une solution à ce problème générique de croissance des fichiers journaux est la rotation des journaux. Cela implique le déplacement régulier (tous les soirs ou toutes les semaines, généralement) d'un fichier journal existant vers un autre nom de fichier et un nouveau départ avec un fichier journal vide. Après un certain temps, les anciens fichiers journaux sont jetés.
Voir :http://www-uxsup.csx.cam.ac.uk/~jw35/courses/apache/html/x1670.htm