0

概念実証の演習として、基本的な Python スクリプトを実行する cronjob を取得しようとしています。Python スクリプトは次のようになります。

#!/usr/bin/python
with open('realfile','a+') as f:
     f.write('testwrite\n')

私のスクリプトは、('realfile' ファイルと共に) 私のホーム ディレクトリの 1 つ下にある 'Documents' ディレクトリにあります (つまり、$HOME/Documents)。

私のcrontabは次のとおりです。

*/1 * * * * /$HOME/Documents/crontest.py

何らかの理由で、crontab はスクリプトを毎分実行しません。コマンドラインから(./crontest.pyを使用して)手動で実行したため、スクリプトは正常に機能します。さらに、スクリプトがホーム ディレクトリにあり、crontab が単純な場合、crontab は完全に正常に機能しました。

*/1 * * * * /$HOME/crontest.py

「locate crontest.py」を使用して「crontest.py」の場所を確認したところ、次の 2 つの場所が見つかりました。
/home/meric/crontest.py /usr/bin/crontest.py

これらのパスの両方を crontab に設定しようとしましたが、それでもジョブは実行されません。

何が問題なのですか?助けてくれてありがとう!

4

3 に答える 3

1

私の知る限り、cronジョブの作業ディレクトリは、実行するユーザーのホームです。したがって、サブディレクトリに と の両方crontest.pyがある場合は、実行する必要がありますが、ホームで見つからない場合は失敗します。オーウェンが言ったようにパスを再確認してください。また、これを使用して任意の作業ディレクトリで実行できます。realfileDocumentscrontest.pyrealfile

*/1 * * * * cd /home/meric/Documents && ./crontest.py
于 2013-07-16T04:39:40.980 に答える
0

あなたのスクリプトはディレクトリにありません:

/$HOME/Documents/crontest.py

あなたはそれが中にあると一番下に言います:

/home/meric/crontest.py /usr/bin/crontest.py

次の場所にコピーしてみませんか。

$HOME/Documents/crontest.py

そしてさらに試みる。

于 2013-07-16T04:34:55.833 に答える
0

Pythonコードの絶対パスを見逃していると思います。これを試して:

#!/usr/bin/python
import os
with open((os.getenv('HOME') + '/Documents/' +'realfile'),'a+') as f:
   f.write('testwrite\n')

cron ジョブを編集します。

*/1 * * * * $HOME/Documents/crontest.py

変数に$HOMEはすでに/

于 2013-07-16T04:45:58.433 に答える