
Un script de Python para apagar el sistema funciona bien desde la terminal, pero no funciona cuando se incluye en crontab. El script es llamado por cron pero termina con un error 'comando de apagado no encontrado'o 'comando init 0 no encontrado'. Estoy usando fedora 17 y el script se ejecuta desde el crontab de root.
#!/usr/bin/python
import os
os.system('shutdown')
os.system('init 0')
Respuesta1
Tu RUTA no es lo que esperabas que fuera. Según la página de manual (versión Debian de) crontab(5), la variable de entorno PATH está configurada /usr/bin:/bin
para programas que se ejecutan desde cron. Puedes cambiar esto agregando una PATH=
línea en la parte superior de tu crontab, por ejemplo:
PATH=/usr/sbin:/sbin:/usr/bin:/bin
Esto cambiará la ruta para todas las entradas de crontab debajo de la línea PATH=, hasta la siguiente línea PATH=. Ver elcrontab(5)página de manual para más detalles.
Respuesta2
Supongo que se supone que la primera línea de tu fragmento es algo como:
#!/usr/local/bin/python
o, si también te aseguras de establecer un valor apropiado para PATH
en tu crontab:
#!/bin/env python
¿Cómo se ve tu entrada de crontab? No olvide que esto cron
establece un entorno muy limitado, por lo que deberá proporcionar la ruta completa al archivo de script para que cron
pueda encontrarlo.
Además, Python probablemente no pueda encontrarlo shutdown
cuando se le llama desde cron
, porque heredará cron
el entorno limitado de . Intente proporcionar la ruta completa al shutdown
comando en su os.system()
llamada.