Cronでスクリプトが正しく実行されない理由を見つけてください。
次の内容を含む* .pyファイルを1分ごとに呼び出すようにシェルを設定します(先頭と末尾の#行が削除されます)。
* * * * * python /root/job.sh
job.shはI2C温度モジュールをチェックし、結果をUbidotsに送信する* .pyファイルを実行します。手動操作がうまく機能します。 Cronの再起動(起動、有効化、および再起動)やjob.shへのユーザー名やフルパスの追加などの他のバリエーションを試しました。
スクリプトは次のとおりです。
#!/usr/bin/env python
python /root/temperature-monitor/main.py
ファイルには次の属性があります(chmod a + x、u + x、755、666なども試行されました)。
-rwx--x--x 1 root root 62 Jul 21 15:07 job.sh
logreadをチェックすると、cronが実行されていることがわかります。
Fri Jul 21 15:38:00 2017 cron.info crond[3464]: USER root pid 3491 cmd /root/job.sh
次のようにログファイルを作成し、出力をそのファイルとして指定します。
* * * * * python /root/job.sh >/root/test1.log 2>&1
ファイルの出力には以下が含まれます。
-ash: crontab.txt: not found
ただし、crontab.txtは、ジョブが一覧表示されている/ etc / crontabsにルート(ファイル名)として一覧表示されます。
次は何を試すかというアイデアはありますか?起動後、スクリプトが無限ループで実行されないようにしてください。
答え1
crontabでpythonを呼び出してシェルスクリプトを実行します(これはpythonスクリプトではありません)。 Pythonをsh(またはashまたはbash)に変更すると、うまく機能すると思います。
答え2
python
を入れる必要はありませんcrontab
。これはシェルスクリプトであり、Pythonはスクリプト内で実行されます。スクリプトは実行可能で、shebang 行があるため、スクリプト自体をコマンドとして実行できます。
* * * * * /root/job.sh