Solución 1:
-
No, van a STDOUT (si usa
echo
) o STDERR (si usaecho >&2
). -
Sus scripts tienen que escribir en registros y/o syslog por sí mismos (su distribución puede contener algo de init.d funciones que podrían ayudar allí:agregue su distribución a su pregunta).
Si busca registros, busque el tee
dominio. Si busca syslog, mire logger
. Puedes combinarlos como quieras.
Solución 2:
Escriba una secuencia de comandos contenedora que llame a su secuencia de comandos y redireccione la salida a archivos
#!/bin/bash
/path/to/your/script &>/path/to/logfile
Solución 3:
Podría hacer una función para repetir el mensaje tanto en la pantalla como en syslog, algo como esto:
LOGGER="/usr/bin/logger -t $myScript" # check the location of logger for your system
myEcho () {
echo "$1"
$LOGGER "$1"
}
También puede poner eso en un archivo separado e incluirlo en sus scripts con
#!/bin/bash
myScript=$(basename $0)
[ -r /myFunctions/myecho ] && . /myFunctions/myecho
Solución 4:
Los mensajes de los scripts de inicio generalmente no se capturan en ninguna parte. Por lo tanto, debe implementar una forma de hacerlo usted mismo. Una buena idea es usar logger
para enviar toda la salida a syslog. Este ejemplo enviará stdout y stderr a syslog:
exec 1> >(logger -s -t $(basename $0)) 2>&1
Lo encontré en este gran artículo:http://urbanautomaton.com/blog/2014/09/09/redirecting-bash-script-output-to-syslog/.