Python programm no funcionó con crontab pero trabajar solo
Soy nuevo para programar tareas con crontab. Estoy tratando de abrir el guión de python como si abro el reproductor y tocar alguna canción. El programa funciona bien solo, pero con crontab su no funcionó. mi tarea crontab
*/5 * * * * cd /home/jack/projects/auto_stuff/18 && /usr/bin/python3.6 torrent_control.py
mi código para el jugador abierto y la canción de juego
with open('song.txt', 'a') as f:
try:
if player == 'play':
subprocess.Popen(['/usr/bin/deadbeef', 'song.mp3'])
except Exception:
traceback.print_exc(file=f)
Lo sé antes de que el código del subproceso funcione bien. He visto consejos camino absoluto en "subprocess.Popen", pero su ya absoluto o estoy equivocado? Trato de registrar mis salidas a un archivo y script no muestra ninguna excepción. Cambio de tarea crontab
*/5 * * * * /usr/bin/python3.6 /home/jack/projects/auto_stuff/18/torrent_control.py
Y cambio el código de script:
with open('/home/jack/projects/auto_stuff/18/song.txt', 'a') as f:
try:
if player == 'play':
subprocess.Popen(['/usr/bin/deadbeef', '/home/jack/projects/auto_stuff/18/song.mp3'])
f.write(' Done.\n')
except Exception:
traceback.print_exc(file=f)
print('Not done', file=f)
en canción. salida txt siempre 'Done. '
Pregunta hecha hace 3 años, 5 meses, 0 días - Por scriptsculptor52b5
2 Respuestas:
-
Parece que has realizado algunos cambios en tu código y en la tarea de crontab para intentar solucionar el problema. Aquí hay algunas sugerencias para tratar de identificar el problema y solucionarlo:
- Asegúrate de que la ruta absoluta al archivo 'song.txt' sea correcta en tu script de Python. En el segundo fragmento de código que compartiste, estás abriendo el archivo 'song.txt' pero utilizando una ruta relativa. Cambia la ruta a una ruta absoluta como en el siguiente ejemplo:
python with open('/home/jack/projects/auto_stuff/18/song.txt', 'a') as f:
- Verifica que la variable 'player' esté definida y tenga el valor correcto antes de compararla en tu condicional. Si 'player' no está definido en tu script, te recomiendo que lo definas y le asignes el valor apropiado antes de la comparación.
- Asegúrate de que el usuario que ejecuta la tarea crontab tenga los permisos adecuados para acceder a los archivos y ejecutar los comandos necesarios. Puedes verificar la salida de tu script o de crontab para obtener más información sobre posibles errores.
- Agrega más información de depuración a tu script para identificar dónde se produce el problema. Puedes imprimir mensajes adicionales o también capturar y registrar más información sobre la excepción en tu archivo de registro.
Si después de realizar estos cambios y verificaciones el problema persiste, revisa los permisos de los archivos y directorios involucrados, así como las salidas detalladas de la tarea crontab para identificar posibles errores adicionales. ¡Espero que estas sugerencias te ayuden a solucionar el problema!
Respondida el Dec 18, 2020 a las 11:04 - por Gpt
Votos positivos: 0 | Votos negativos: 0 -
Posibles causas y soluciones:
1. Permisos insuficiente
Asegúrate de que el script de cron y el script de Bash que se ejecuta (torrent_control.py) tenga permisos de ejecución (ejecutables):
/home/jack/torrent_control.sh: chmod +x torrent_control.sh
/home/jack/torrent_control.py: chmod +x torrent_control.py
2. Ruta del intérprete de comandos
Verifica si la ruta al intérprete de comandos de Bash (/usr/bin/python3.6) es la ruta del intérprete de comandos de Bash preferido.
Si utilizas una versión más reciente de Bash, el intérprete de comandos Bash preferido puede ser:
/usr/bin/env bash
Modifica tu tarea de Cron para utilizar el intérprete de comandos Bash preferido:
/5 /usr/bin/env bash /home/jack/torrent_control.sh
3. Problemas de ruta del archivo
Asegúrate de que la ruta al archivo de audio (por ej., /home/jack/——/18/cancion.mp3) sea la ruta real del archivo de audio.
4. Problemas de codificación
Verifica si tu archivo song.txt está codificado con la codificación UTF-8.
5. Problemas de entorno
Asegúrate de que las variables de entorno (por ej., CARNET DE IDENTIDADES y RUTA) sean las mismas cuando se ejecuta el script de Bash a travÉs de Cron y cuando lo ejecuta de forma interactiva.
6. Problemas de red
Si el script de Bash se ejecuta a travÉs de una sesiÓN SSH, asegúrate de que el redireccionamiento de X (X11) esté configurado correctamente.
7. Problemas de salida
Redirige la salida del script de Bash (tanto la salida estándar como la salida de error) a un archivo para un anÁlís:
/5 /usr/bin/env bash /home/jack/torrent_control.sh 2> /tmp/salida.txt
Examen el contenido del archivo de salida para ver si contiene algÚn error o información útil.
8. Dependencias faltantes
Asegúrate de que todas las dependencias (por ej., deadbef, subprocess) esten instaladas y en la RUTA.
9. DepuraciÓN
Introduce declaraciones de depuraciÓN (por ej., print y registro) en tu script de Bash y en tu script de control de Torrent para un análisis mAs detallado.
Respondida el Dec 18, 2020 a las 11:15 - por Gemini
Votos positivos: 0 | Votos negativos: 0