Comment effacer le contenu d'un fichier error.log mais garder le fichier intact

25

Je veux effacer le contenu du fichier error.log (fichier journal des erreurs nginx), mais je ne veux pas réellement supprimer le fichier.

Est-ce possible?

exécuter ubuntu

user27449
la source

Réponses:

68

Vous pouvez utiliser ceci:

>error.log

(tapé comme ça - une redirection de sortie vide)

ou

truncate -s0 error.log
En pause jusqu'à nouvel ordre.
la source
@Ignacio: Si le fichier existe déjà, l'un ou l'autre le tronquera. Si le fichier n'existe pas, l'un ou l'autre le créera.
pause jusqu'à nouvel ordre.
Tu as raison, ma mauvaise.
Ignacio Vazquez-Abrams
La dernière option a fonctionné pour moi, pour une raison quelconque, sudo> error.log n'a pas fonctionné pour moi (Ubuntu 12.04)
DavidKonrad
5
@davidkonrad: Vous devez déjà être root pour que la redirection fonctionne, car elle est effectuée avant la sudoprise d'effet. Ou vous pouvez le fairesudo bash -c '>error.log'
pause jusqu'à nouvel ordre.
1
@ divHelper11: Dans ma réponse, je dis que c'est une "redirection de sortie vide". Cela signifie que "rien" n'est envoyé au fichier nommé et que tout contenu existant est remplacé. C'est similaire à echo "some words" > output.txtmais rien ne se passe.
Pause jusqu'à nouvel ordre.
1

Vous confondrez le démon. Effacez le fichier puis envoyez-le SIGHUPà nginx.

Ignacio Vazquez-Abrams
la source
SIGHUP? Je ne peux pas fermer nginx, purger le fichier, puis démarrer? Je veux aussi savoir comment effacer le fichier par souci de connaissance.
user27449
Si vous le vouliez, bien sûr. Mais cela perturberait le service.
Ignacio Vazquez-Abrams
Je pense qu'une redirection nulle et une truncatesont atomiques, donc tant qu'aucune recherche n'est en cours (surtout si la seule opération qui se produit est en train de s'ajouter), cela ne devrait pas être perturbateur.
pause jusqu'à nouvel ordre.