Tengo un archivo llamado error.log en mi servidor que necesito truncar con frecuencia. Tengo permisos rw para el archivo. Abrir el archivo en vi> eliminar todo el contenido> guardar trabajos (obviamente). Pero cuando pruebo lo de abajo
cat /dev/null > error.log
entiendo el mensaje
File already exists.
Obviamente, existe algún tipo de configuración en el servidor para evitar la anulación accidental de archivos. ¿Alguien puede decir cómo "trunco" el archivo en un solo comando?
linux
file
command-line
Sumeet Pareek
fuente
fuente
Respuestas:
Tienes la
noclobber
opción configurada. El error parece ser de csh, por lo que debería hacer:Si me equivoco y estás usando bash, debes hacer:
en bash, también puede acortarlo a:
fuente
File exists
error similar mientras que bash da uncannot overwrite existing file
error muy diferente .>file
no funciona.> file
y>| file
?noclobber
opción configurada, el intento de redirigir a un archivo existente falla. Para anular la redirección específica sin dejar el noclobber activado, puede usar>|
También puede utilizar la función truncar
si se le niega el permiso, use sudo
Ayuda / Manual: man truncate
probado en ubuntu Linux
fuente
Esto será suficiente para establecer el tamaño del archivo en 0:
fuente
el mérito es de mi colega principal por esto:
Esto no romperá los archivos de registro, por lo que incluso puede usarlo en syslog, por ejemplo.
fuente
:
es un comando sin efecto (casi un comentario), luego>
es la redirección como de costumbre, por lo que esto solo redirige la falta de salida de un comando que no hace nada en el archivo. Si noclobber está habilitado, necesita:>| filename
(bash) (y supongo que:>! filename
en csh asumiendo que csh tiene:
).puede funcionar también
fuente
dd
salida de nada sería incluso mejor que la simple lecturafalse
?Dado que sudo no funcionará con la redirección
>
, me gusta eltee
comando para este propósitofuente
error.log
, si ya se puede escribir, no es necesario sudo. Creo que el otro problema es que está pasando el comando como argumento de cadenash
, no sé cómo se maneja internamente, pero esa es otra capa de complejidad / redirección agregadaecho ""
agregará una nueva línea. Puede utilizarecho -n ""
para suprimir la nueva líneaCualquiera puede probar este comando para truncar cualquier archivo en el sistema Linux
Esto seguramente funcionará en cualquier formato:
fuente
Me gusta esto:
cp /dev/null file
fuente
También puedes probar:
echo -n > /my/file
fuente
noclobber
y luego pregúntese si su respuesta tiene algún sentido.