1

root ユーザーとして cronjob-script を実行します。スクリプトは/root/scripts/myscript.py にあります この python スクリプトでは、次のようなファイルに書き込みます

log = open(os.path.basename(__file__) + ".log", "w+")
print("some text", file=log)

これにより、 myscript.py.logという名前のファイルが作成されるはずであり、作成されます。ただし、このファイルは/root/myscript.py.logにあります。何故ですか?スクリプトディレクトリに作成されると思っていました。

Debian Squeezeを使用し、root ユーザーとしてcrontab -eを介してジョブを追加します。

4

1 に答える 1

2

これは、cron タスクが開始されたときの cwd に依存するためです。cron もディレクトリを変更する可能性があるため、cron によって実行されるジョブには常に絶対パス名を使用するか、コマンド ラインから絶対スタブを渡します。

あなたの場合、 crontab -e をルートとして実行すると、cronはスクリプトをルートとして実行するため、そのユーザーのホームディレクトリを使用します。つまり /root

于 2013-02-03T16:34:24.730 に答える