O script Python para desligar o sistema não funciona no cron

O script Python para desligar o sistema não funciona no cron

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:/binpara 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 PATHem seu crontab:

#!/bin/env python

Como é a sua entrada no crontab? Não se esqueça que isso cronconfigura um ambiente muito limitado, então você precisará fornecer o caminho completo para o arquivo de script para que cronpossa encontrá-lo.

Além disso, python provavelmente não conseguirá encontrar shutdownquando chamado from cron, porque herdará crono ambiente limitado de. Tente fornecer o caminho completo para o shutdowncomando na sua os.system()chamada.

informação relacionada