1. ホーム
  2. linux

[解決済み] CronJobが実行されない

2022-03-03 14:20:52

質問

ubuntu環境のrootユーザーに、以下のようにcronjobを設定しました。 crontab -e

  34 11 * * * sh /srv/www/live/CronJobs/daily.sh
  0 08 * * 2 sh /srv/www/live/CronJobs/weekly.sh
  0 08 1 * * sh /srv/www/live/CronJobs/monthly.sh

しかし、cronjobは実行されません。cronjobが実行されているかどうかは pgrep cron と表示され、プロセス ID 3033 が表示されます。シェルスクリプトはパイソンファイルを呼び出し、電子メールを送信するために使用されています。pythonファイルを実行するのはOKです。エラーは出ていませんが、cronが実行されません。daily.shファイルには、以下のコードがあります。

python /srv/www/live/CronJobs/daily.py
python /srv/www/live/CronJobs/notification_email.py
python /srv/www/live/CronJobs/log_kpi.py

解決方法は?

ようやく解決策が見つかりました。以下はその解決策です。

  1. crontabで実行されるpythonスクリプトには、絶対に相対パスを使わないでください。 私は代わりに以下のようなことをしました。

    import os
    import sys
    import time, datetime
    
    CLASS_PATH = '/srv/www/live/mainapp/classes'
    SETTINGS_PATH = '/srv/www/live/foodtrade'
    sys.path.insert(0, CLASS_PATH)
    sys.path.insert(1,SETTINGS_PATH)
    
    import other_py_files
    
    
  2. メールサーバーを使用して、そのユーザーのメールをチェックする代わりに、決してcrontabのコードを抑制しないでください。そうすることで、何が起こっているのかがより明確にわかるようになります。