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并通过crontab -e作为 root 用户添加作业。

4

1 回答 1

2

这是因为它取决于 cron 任务启动时的 cwd,cron 也可以更改目录,因此对于 cron 运行的作业始终使用绝对路径名,或者从命令行传入绝对存根。

在您的情况下 crontab -e 以 root 身份运行,cron 将以 root 身份运行您的脚本,因此使用该用户的主目录。即/根

于 2013-02-03T16:34:24.730 回答