我写了一个写入文本文件的python脚本,代码如下:
playercountlog = open("PMCcount.txt", "a")
playercountlog.write(time.strftime("%m/%d/%Y"));
playercountlog.write(" ");
playercountlog.write(time.strftime("%I:%M:%S"));
playercountlog.write(" ");
playercountlog.write(count);
playercountlog.write("\n")
playercountlog.close()
这个脚本在以root身份执行时运行正常(python program.py),但是当像这样添加到cron时:
* * * * * /user/bin/python /home/labtec901/program.py
没有任何内容写入文件。
我已经将程序和txt文件chmod到777只是为了确定,但没有区别。是什么给了什么?
答案 0 :(得分:3)
cron作业有一个不同的工作目录。所以,无论是在其他地方写的还是失败的,因为那里没有权利。请改用绝对文件名。
答案 1 :(得分:0)
crontab
中的行可能应该是:
* * * * * cd /home/labtec901 && /usr/bin/python /home/labtec901/program.py
这解决了两个问题:您的程序现在正在labtec901
的主目录(而不是root
目录中运行,如果它的crontab它的crontab is),Python的路径已经更正 - 从/user/bin/python
到/usr/bin/python
。
或者,如果你不想在crontab中使用cd
命令,只需将put作为python程序的第一行:
import os
os.chdir('/home/labtec901')
OR ,您可以指定要打开的文件的绝对路径:
playercountlog = open("/home/labtec901/PMCcount.txt", "a")
答案 2 :(得分:0)
--user
是答案(对我而言)我刚刚发现这篇文章,因为我遇到了完全相同的问题(多年后)。
我尝试了很多,例如建议的 os.chdir('...')
无效。
最终我将文件执行为:
0 * * * * python3 /home/me/folder/script.py --user
和 --user 帮我解决了问题。
注意,如果在执行脚本之前没有使用 cd /home/me/folder/ && python3 /home/me/folder/script.py --user
,输出将直接写入主目录 me
。
附带说明:即使 python 脚本显示 with open('right_here.txt', 'a+') as file: [..]
也会发生这种情况,因此表明文件位于同一文件夹中。 CRON 对此有不同看法。