Mis archivos de registro se vuelcan con el siguiente mensaje mientras ejecuto scripts de shell utilizando algunos comandos subyacentes de MySQL.
Aquí está el mensaje:
"Advertencia: el uso de una contraseña en la interfaz de línea de comandos puede ser inseguro".
Para detener estos mensajes, estoy usando la siguiente definición de trabajo.
Ejemplo:
run_wrapper.sh |grep -v "Warning: Using a password" > output.log 2>&1
Esto funcionó pero los errores de MySQL no se están registrando output.log
.
Si cambio la definición de la siguiente manera, los errores de MySQL comenzarán a aparecer si los hay
run_wrapper.sh > output.log 2>&1
Entonces, la pregunta es ¿cómo suprimir los mensajes de advertencia y también informar los errores de SQL en los archivos de registro utilizando solo la definición cron?
shell-script
logs
io-redirection
mysql
jagadish puvvada
fuente
fuente
run_wrapper.sh >> output.log 2>&1
-p
opción en la línea de comando. En lugar de arreglarlo (p. Ej., Creando una~/.my.cnf
con 600 permisos), el OP solo quiere ignorar y descartar la advertencia (y solo esa advertencia, no toda stderr)Respuestas:
En su script bash, edítelo en la parte superior
y consulta mysql como:
mysql -u username -h host db -e "statement"
Referencia: De la respuesta publicada en Stackoverflow . También se pueden seguir otras respuestas.
fuente
busca una línea en tu contenedor similar a
y cambiar a
Esto resuelve la fuente de la advertencia.
fuente
Parece que te estás perdiendo la redirección stderr de
run_wrapper.sh
sí mismo, por lo que los errores no pasan a través delgrep
archivo de registro.Pruebe esto en su lugar si está contento de tener tanto stdout como sdterr escritos en su archivo de registro
O si solo desea que se escriban los errores en el archivo de registro, y stdout dejó escrito en el terminal de llamada, intente esto
fuente
Prueba esto:
Redirige stderr mediante Process Substitution a
grep -v ...
, y la salida de eso se agrega>>
aoutput.log
Probablemente desee utilizar
grep
la--line-buffered
opción (GNU)-v
y asegurarse de que la salida de error no se retrase.Si el procesamiento posterior del archivo de registro es una opción aceptable para usted, puede eliminar las líneas "Advertencia:" no deseadas del archivo de registro una vez que
run_wrapper.sh
haya finalizado.El siguiente fragmento de script de shell guarda la marca de tiempo (in
$ts
) del archivo de registro (in$lf
) antes de ejecutarlosed -i
y lo restaura después:Si necesita preservar el inodo del archivo de registro (por ejemplo, porque tiene enlaces duros), use en
ed
lugar desed
:fuente
-i
(y la mayoría de las formas de edición "en el lugar"). Si se ejecuta inmediatamente después, solo debería ser microsegundos o segundos diferentes, dependiendo del tamaño del archivo de registro, por supuesto, pero no hay manera a.d
de comandos (línea de borrado) ensed
será crear una línea en blanco - lo que es exactamente lo que quiere decir con eso?sed
opción @jagadishpuvvada ahora guarda y restaura la marca de tiempo de output.log.Intente agregar esto al final de su comando:
fuente