从crontab运行后,python程序无法正常工作

2024-05-14 04:08:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我试着让一个程序从一个特定的URL下载一个文件。检查是否存在并重命名原始文件

当我用sudo命令运行它时,一切正常。我说。。真 的!!完成!当我把它添加到cron标签中。。。繁荣!什么都不管用。你知道吗

我读了一篇帖子,上面说做一个脚本,然后从那里运行它,所以我做了

sudo crontab -e -> */5 * * * * /home/pi/guardian/run_update.sh
run_update.sh -> #!/bin/sh sudo /usr/bin/python /home/pi/guardian/updater.py

我遇到的问题:

  1. 我无法用重命名文件操作系统(“sudo mv”+originalfile+“”+renamedfile)未引发错误
  2. 我无法使用操作系统重命名命令在这两种情况下崩溃,没有错误相同,没有错误

    *上面的错误我通过在变量上使用较小的名称来修复

    你知道吗操作系统(“sudo mv”+s1+“”+s2)

  3. 我无法使用存储从web下载的文件

地址:

testfile = urllib.URLopener()
urllib.urlretrieve(s1, s2)

或者使用

getfile = urllib2.URLopener(fromwhere+downloadfiles[i])
with open(downloadfiles[i],'wb') as output:
    data=getfile.read(4096)
    if data:
        output.write(data)
    else:
        break:

请给出建议

经过多次尝试后,我发现程序在命令行上运行得非常完美,而在crontab上运行时几乎没有任何效果,因此在我现在的情况下,使用“try and seek”技术,问题是我无法存储下载的文件

回答来自维卡什·辛格非常感谢,先生!!你知道吗

程序试图将下载的文件保存到“/root”中,之后只是存储位置和路径的问题。你知道吗


Tags: 文件run命令程序homedatabinsh
1条回答
网友
1楼 · 发布于 2024-05-14 04:08:35

为什么不更新crontab来直接运行python代码呢。而不是调用调用python脚本的shell脚本。你知道吗

sudo crontab -e -> */5 * * * * /usr/bin/python /home/pi/guardian/updater.py

更新:在注释中进行了长时间的讨论之后,我们发现从crontab运行的代码正在根目录中编写文件。作为crontab,根用户的默认目录是“/”。你知道吗

修复是添加完整的路径写入文件。此完整路径是我们查找文件的预期路径。你知道吗

另一个选项是将crontab更改为首先将目录更改为预期目录,然后运行程序:

sudo crontab -e -> */5 * * * * cd <to program path> && /usr/bin/python /home/pi/guardian/updater.py

解释当用sudo从命令行运行程序时它为什么工作。

当程序在命令行中执行时,用户将运行以下程序:

$ cd /path/to/program/
/path/to/program @ user$ sudo python program.py
# this program will create file in current directory 
# which is where we were expecting the output file to be.

当我们用crontab root用户运行它时。它将在根目录中运行,因为这是程序的运行目录。在航站楼,它会像:

$ sudo /usr/bin/python /path/to/program/program.py

这将在/目录中创建输出文件

相关问题 更多 >