Script Python para o sistema de desligamento não funciona no cron

3

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 shutdown não encontrado ' ou ' comando init 0 não encontrado '. Eu 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')
    
por atree 18.07.2012 / 16:33

2 respostas

1

Eu 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 para PATH no seu crontab:

#!/bin/env python

Como é a sua entrada no crontab? Não se esqueça que cron define 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, o Python provavelmente não encontrará shutdown quando chamado de cron , porque herdará o ambiente limitado de cron . Tente fornecer o caminho completo para o comando shutdown na sua chamada os.system() .

    
por 18.07.2012 / 16:42
4

Seu PATH não é o que você espera que seja. De acordo com a página do manual (Debian versão do) crontab (5), a variável de ambiente PATH é definida como /usr/bin:/bin para programas executados a partir do cron. Você pode mudar isso adicionando uma linha PATH= no topo do seu crontab, por exemplo:

PATH=/usr/sbin:/sbin:/usr/bin:/bin

Isso mudará o caminho para todas as entradas de crontab abaixo da PATH = line, até a próxima PATH = line. Consulte a página do manual crontab (5) para obter mais detalhes.

    
por 18.07.2012 / 16:53

Tags