Cron运行Python脚本:权限错误

时间:2017-07-28 14:20:00

标签: python linux cron

我有一个python程序,它基本上打开一个文件testlog.txt,它应该与程序文件在同一个目录中,并将当前的日期和时间戳附加到它。

编辑:文件打开功能只是f = open(file,'a')

我们假设程序位于/home/user1/pyscript/程序将打印日期/时间及其输出。现在,当我从该目录中运行脚本时,它运行正常。

/目录运行它会在写入文件时出现权限错误。这是我的问题可能来自的地方,但我想了解它背后的逻辑。

我有一个crontab条目,脚本每分钟运行一次。条目如下所示:

*/1 * * * * sudo python /home/user1/pyscript/test.py >> /home/user1/pyscript/test.txt

当作业运行时,它实际上将打印输出写入文件test.txt,但它不会写入文件testlog.txt

我的问题是,如果cron作业可以写入一个文件,它怎么没有权限写入另一个文件。

ls -l让我关注程序文件所在的目录。

drwxr-xr-x  6 ec2-user users     4096 Jul 27 20:29 pyscript

1 个答案:

答案 0 :(得分:1)

首先要做的事情:不要将sudo放在你的cronjob前面,确保脚本真的,真的需要以root运行。更安全的方法是查看脚本需要触摸的内容,在系统上创建新用户并为该用户提供执行脚本所需的确切权限,然后将sudo替换为该用户名。

现在你的实际问题。你写了

  

有一个python程序,它基本上打开一个文件(testlog.txt(in   与程序文件相同的目录)并附加当前日期   和时间戳。

我会根据措辞假设你打开带有前缀testlog.txt的{​​{1}}?在这种情况下,我会要求您查看您的./文件夹。您应该在那里找到/,因为您的脚本在testlog.txt下运行,脚本应该能够创建该文件。

尝试从root手动运行脚本时收到权限错误的原因是您可能没有使用/并且当时未以sudo身份登录

而是尝试使用它来获取脚本所在目录的路径,其中应创建root文件:

testlog.txt

这基于两个答案:

相关问题