
Um script python para desligar o sistema funciona bem no terminal, mas não funciona quando incluído no crontab. O script é chamado pelo cron mas termina com um erro 'comando de desligamento não encontrado'ou 'comando init 0 não encontrado'. Estou usando o fedora 17 e o script é executado a partir do crontab do root.
#!/usr/bin/python
import os
os.system('shutdown')
os.system('init 0')
Responder1
Seu PATH não é o que você espera que seja. De acordo com a página man (versão Debian da) crontab(5), a variável de ambiente PATH é definida como /usr/bin:/bin
para programas executados a partir do cron. Você pode alterar isso adicionando uma PATH=
linha no topo do seu crontab, por exemplo:
PATH=/usr/sbin:/sbin:/usr/bin:/bin
Isso mudará o caminho para todas as entradas do crontab abaixo da linha PATH=, até a próxima linha PATH=. Veja ocrontab(5)página de manual para mais detalhes.
Responder2
Acho que a primeira linha do seu snippet deveria ser algo como:
#!/usr/local/bin/python
ou, se você também definir um valor apropriado PATH
em seu crontab:
#!/bin/env python
Como é a sua entrada no crontab? Não se esqueça que isso cron
configura um ambiente muito limitado, então você precisará fornecer o caminho completo para o arquivo de script para que cron
possa encontrá-lo.
Além disso, python provavelmente não conseguirá encontrar shutdown
quando chamado from cron
, porque herdará cron
o ambiente limitado de. Tente fornecer o caminho completo para o shutdown
comando na sua os.system()
chamada.