システムをシャットダウンする Python スクリプトが cron で動作しない

システムをシャットダウンする Python スクリプトが cron で動作しない

システムをシャットダウンする Python スクリプトは、ターミナルからは正常に動作しますが、crontab に含まれていると動作しません。スクリプトは cron によって呼び出されますが、エラーで終了します 'シャットダウンコマンドが見つかりません'または 'init 0 コマンドが見つかりません私は fedora 17 を使用しており、スクリプトは root の crontab から実行されます。

#!/usr/bin/python
import os
os.system('shutdown')
os.system('init 0')

答え1

PATH が期待どおりではありません。crontab(5) のマニュアル ページ (Debian 版) によると、PATH 環境変数は/usr/bin:/bincron から実行されるプログラムに対して設定されます。crontab の先頭に次の行を追加することでこれを変更できますPATH=。例:

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

これにより、PATH=行の下から次のPATH=行までのすべてのcrontabエントリのパスが変更されます。crontab(5)詳細については man ページを参照してください。

答え2

スニペットの最初の行は次のようになると思います:

#!/usr/local/bin/python

または、PATHcrontab に適切な値が設定されていることを確認してください。

#!/bin/env python

croncrontab エントリはどのようになっていますか?非常に制限された環境を設定することを忘れないでください。そのため、スクリプト ファイルcronを見つけられるように、スクリプト ファイルへの完全なパスを提供する必要があります。

shutdownさらに、から呼び出された場合cron、 の制限された環境を継承するため、python は を見つけることができない可能性があります。呼び出しでコマンドcronへのフルパスを指定してみてください。shutdownos.system()

関連情報