¿Hay una manera fácil de registrar toda la actividad que ocurre desde un script de shell en un archivo?
Tengo un guion Produce cosas como "instrucciones" de eco, así como otros resultados del programa. Sé los comandos:
command | tee -a "$log_file"
y
command >> logifle.log
Lo que pregunto es si hay un parámetro de shell para iniciar sesión, o un comando set que pueda usar o algo así. No necesariamente quiero agregar docenas de redireccionamientos o tee a los archivos si no es necesario. Sin embargo, todavía quiero obtener la salida estándar, solo quiero que se registre: wq
Respuestas:
si normalmente ejecuta su script con
foo.sh
, intente ejecutarlo (suponiendo que sea un script bash) conbash -x foo.sh
. Si desea que todo se redirija al archivo, intentebash -x foo.sh > file.log 2>&1
(tenga en cuenta que también estoy redirigiendo stderr, elimine el2>&1
si no lo desea). Si también quiere ver lo que está pasando,bash -x foo.sh 2>&1 | tee log.file
.fuente
Hay una manera muy fácil y práctica:
Utilizando
script
para hacer mecanografiado de sesión terminalInicia el comando
script
Si
file
se da el argumento , por ejemploscript ~/tmp/output
,script
guarda el diálogo en este archivo. Si no se proporciona un nombre de archivo, el diálogo se guarda en el archivotypescript
Comience su script o lo que quiera comenzar
Si su script está terminado, deténgase a
script
través de Ctrl-DVerifique la salida en el archivo de salida predeterminado
typescript
Para comenzar su comando en un paso
script
, use el parámetro-c
El uso de
script
dentro de su script no tiene sentido porquescript
bifurca el shell o inicia un nuevo shell.fuente
script logfilename
, así que puedo elegirlo.script
es útil también un monitoreo a través de un fifo. Deman script
: "-f, --flush
Descarga de salida después de cada escritura. Esto es bueno para la telecooperación: una persona lo hacemkfifo foo; script -f foo
y otra puede supervisar en tiempo real lo que se está haciendo usandocat foo
". También se puede usar para monitorear cuando un programa está esperando entrada o se realiza, por ejemplo, monitoreando la marca de tiempo del fifo.