¿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>&1si 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
scriptpara hacer mecanografiado de sesión terminalInicia el comando
scriptSi
filese da el argumento , por ejemploscript ~/tmp/output,scriptguarda el diálogo en este archivo. Si no se proporciona un nombre de archivo, el diálogo se guarda en el archivotypescriptComience su script o lo que quiera comenzar
Si su script está terminado, deténgase a
scripttravés de Ctrl-DVerifique la salida en el archivo de salida predeterminado
typescriptPara comenzar su comando en un paso
script, use el parámetro-cEl uso de
scriptdentro de su script no tiene sentido porquescriptbifurca el shell o inicia un nuevo shell.fuente
script logfilename, así que puedo elegirlo.scriptes útil también un monitoreo a través de un fifo. Deman script: "-f, --flushDescarga de salida después de cada escritura. Esto es bueno para la telecooperación: una persona lo hacemkfifo foo; script -f fooy 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.