En Linux, escribí algunos scripts para ejecutar durante el arranque y jugué con las diversas formas de instalarlos. Para scripts más grandes, pondré /etc/init.d
y vincularé los /etc/rc.d/rc?.d
niveles de ejecución apropiados . Para guiones más pequeños, agregaré /etc/rc.d/rc.local
. Este proceso parece estar funcionando sin problemas.
Ahora he modificado uno de mis scripts y está fallando. Me está costando mucho diagnosticarlo porque parece que no puedo capturar la salida del error. He revisado /var/log/messages
y examinado el resto, /var/log
pero no puedo encontrar nada útil.
Alguien sabe:
- ¿Se capturan automáticamente estos mensajes de error en alguna parte?
- si no, ¿cómo puedo capturar el stdout / stderr de mis scripts init.d?
Gracias por adelantado.
Respuestas:
No, van a STDOUT (si lo usa
echo
) o STDERR (si lo usaecho >&2
).Sus scripts tienen que escribir en registros y / o syslog por sí mismos (su distribución puede contener algunas funciones init.d que pueden ayudar allí; agregue su distribución a su pregunta).
Si buscas registros busca el
tee
comando. Si buscas syslog miralogger
. Puedes combinarlos de la forma que quieras.fuente
Escriba una secuencia de comandos de envoltura que llame a su secuencia de comandos y redirija la salida a un archivo
fuente
Podría hacer una función para hacer eco del mensaje tanto en la pantalla como en syslog, algo como esto:
También puede poner eso en un archivo separado e incluirlo en sus scripts con
fuente
[ -r ... ]
una prueba para verificar si existe?Los mensajes de scripts de inicio generalmente no se capturan en ningún lado. Por lo tanto, debe implementar una forma de hacerlo usted mismo. Una buena idea es usar
logger
para enviar todos los resultados a syslog. Este ejemplo enviará stdout y stderr a syslog:Lo encontré en este gran artículo: http://urbanautomaton.com/blog/2014/09/09/redirecting-bash-script-output-to-syslog/ .
fuente