El script Python para apagar el sistema no funciona en cron

El script Python para apagar el sistema no funciona en cron

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:/binpara 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 PATHen tu crontab:

#!/bin/env python

¿Cómo se ve tu entrada de crontab? No olvide que esto cronestablece un entorno muy limitado, por lo que deberá proporcionar la ruta completa al archivo de script para que cronpueda encontrarlo.

Además, Python probablemente no pueda encontrarlo shutdowncuando se le llama desde cron, porque heredará cronel entorno limitado de . Intente proporcionar la ruta completa al shutdowncomando en su os.system()llamada.

información relacionada