我有一个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
答案 0 :(得分:1)
首先要做的事情:不要将sudo
放在你的cronjob前面,确保脚本真的,真的需要以root
运行。更安全的方法是查看脚本需要触摸的内容,在系统上创建新用户并为该用户提供执行脚本所需的确切权限,然后将sudo
替换为该用户名。
现在你的实际问题。你写了
有一个python程序,它基本上打开一个文件(testlog.txt(in 与程序文件相同的目录)并附加当前日期 和时间戳。
我会根据措辞假设你打开带有前缀testlog.txt
的{{1}}?在这种情况下,我会要求您查看您的./
文件夹。您应该在那里找到/
,因为您的脚本在testlog.txt
下运行,脚本应该能够创建该文件。
尝试从root
手动运行脚本时收到权限错误的原因是您可能没有使用/
并且当时未以sudo
身份登录
而是尝试使用它来获取脚本所在目录的路径和,其中应创建root
文件:
testlog.txt
这基于两个答案: