
システムをシャットダウンする 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:/bin
cron から実行されるプログラムに対して設定されます。crontab の先頭に次の行を追加することでこれを変更できますPATH=
。例:
PATH=/usr/sbin:/sbin:/usr/bin:/bin
これにより、PATH=行の下から次のPATH=行までのすべてのcrontabエントリのパスが変更されます。crontab(5)詳細については man ページを参照してください。
答え2
スニペットの最初の行は次のようになると思います:
#!/usr/local/bin/python
または、PATH
crontab に適切な値が設定されていることを確認してください。
#!/bin/env python
cron
crontab エントリはどのようになっていますか?非常に制限された環境を設定することを忘れないでください。そのため、スクリプト ファイルcron
を見つけられるように、スクリプト ファイルへの完全なパスを提供する必要があります。
shutdown
さらに、から呼び出された場合cron
、 の制限された環境を継承するため、python は を見つけることができない可能性があります。呼び出しでコマンドcron
へのフルパスを指定してみてください。shutdown
os.system()