Estoy ejecutando un script de shell que está escribiendo en un archivo.
Este script puede tardar mucho tiempo en completarse y me gustaría supervisar la salida parcial en lugar de esperar a que termine todo el script.
¿Es seguro abrir (doble clic) un archivo que está siendo escrito por el script?
linux
command-line
bash
filesystems
bash-scripting
Ninguna
fuente
fuente
Respuestas:
Leer el archivo es seguro, aunque hacer doble clic en lo que mencionó probablemente abrirá el archivo en algún editor que le ofrecerá una opción para realizar cambios y guardarlos. Los clics erróneos ocurren, por lo que recomiendo comandos que ni siquiera le permitirán cambiar el archivo.
Estos son ejemplos que funcionan en terminal; solo leerán el archivo:
fuente
Mientras no le esté escribiendo, debería estar bien.
Sin embargo, recomendaría usar
en otra terminal
Este comando "seguirá" el archivo
log_file
y escribirá el contenido recién agregado tan pronto como el script lo actualice.fuente
No hay suficiente representante para agregar un comentario a la respuesta de Kamil Maciorowski:
Para algunos archivos, querrá
tail -F file
que lo siguiente continúe a través de una rotación. Viendo syslog por ejemplo.fuente
En caso de que el script (o la implementación del marco subyacente) esté abriendo y cerrando repetidamente el identificador de archivo durante su trabajo, puede encontrar un error de violación de uso compartido en el modo de escritura posterior abierto por las siguientes razones:
1) El script puede solicitar la escritura acceso en modo exclusivo (excluido el acceso de lectura concurrente), por lo que si su programa editor / visor de archivos aún solo está leyendo el archivo, puede provocar una falla en el script de escritura.
2) Además, algunos editores / visores de archivos bloquean el archivo durante todo el tiempo que tienen el archivo abierto.
En conclusión, hay posibles problemas que dependen del programa que esté utilizando para ver el archivo. Y existen posibles problemas derivados de la implementación (o el marco subyacente) del script que escribe en el archivo.
fuente
tail -f
oless +F
es rutina.