
Tengo un script que funciona bien si lo invoco desde la línea de comando usando Bash. Pero cuando cron intenta ejecutarlo, falla con el error "mysql: comando no encontrado".
Creo que esto se debe a que cron no usa bash como shell, pero no puedo entender cómo hacer que cron use bash.
Intenté agregar esto al principio del script:
#!/bin/bash
Pero no hay alegría. ¿Cómo fuerzo a cron a usar bash como shell? Soy un poco nuevo en bash y cron, por lo que es posible que me esté perdiendo algo simple. Leí varias publicaciones sobre errores del servidor (las vincularía a todas, pero no puedo, nuevo usuario) e intenté comprender y aplicar la información lo mejor que pude, además busqué en Google un montón, pero estoy atascado.
Respuesta1
Pulegium tiene razón, el problema no es el tipo de shell, sino la RUTA. Cuando se ejecuta cron, tiene una ruta de búsqueda muy limitada, en lugar de ingresar mysql
su comando, debe ingresar /path/to/mysql
la ruta real al ejecutable. Generalmente algo así como /usr/local/bin/mysql
. Tendrás que buscarlo para encontrar la ruta exacta. Además, si se tratara de un problema de shell, en su archivo cron podría ejecutar bash y luego ejecutar su script: /bin/bash /path/to/script.sh
, esto aseguraría que bash fuera quien procesara el archivo.
Respuesta2
Lo mejor es utilizar rutas absolutas a los comandos en los scripts cron. para que no dependa de ninguna configuración de RUTA que haya personalizado.