![crontab -e 正在运行我的 python 脚本,但它将脚本的结果保存在我的主目录中](https://linux22.com/image/206827/crontab%20-e%20%E6%AD%A3%E5%9C%A8%E8%BF%90%E8%A1%8C%E6%88%91%E7%9A%84%20python%20%E8%84%9A%E6%9C%AC%EF%BC%8C%E4%BD%86%E5%AE%83%E5%B0%86%E8%84%9A%E6%9C%AC%E7%9A%84%E7%BB%93%E6%9E%9C%E4%BF%9D%E5%AD%98%E5%9C%A8%E6%88%91%E7%9A%84%E4%B8%BB%E7%9B%AE%E5%BD%95%E4%B8%AD.png)
我有一个 python 脚本,它从一些 XML 文件中获取数据并将它们显示在网站上。该脚本每次运行时都会覆盖index.html 文件,并用存储在某些变量中的数据替换HTML 模板中的某些文本。该脚本运行良好。
我将命令放入 crontab 中每小时运行一次,并且它有效。但它将新更新的 index.html 文件保存到主目录,但我希望将其保存到 /var/www/html/ 。 python 脚本从同一位置运行。
有没有办法让 crontab 运行脚本并将脚本生成的 index.html 文件保存到正确的位置? (/var/www/html)
这是我在 crontab 中放入的命令:
0 * * * * python /var/www/html/boinc.py
谢谢
答案1
您必须始终注意 的cron
特征。许多人认为仅仅因为它是他们的用户的crontab
,它cron
也继承了他们的用户环境从交互式 shell 中。但这不是它的工作原理。
如果你曾经好奇的关于用于运行作业的环境cron
,请在您的 中创建这个简单的作业crontab
,并cron
会告诉您它的环境是什么:
* * * * * /usr/bin/printenv > /home/me/mycronenv.txt 2>&1
一旦得到答案,您就可以通过crontab
再次编辑来停止该作业。 :)
答案2
脚本的位置与其执行无关。运行作业时cron
,它将当前目录设置为用户的主目录。
您需要自己设置工作目录,或者修改脚本以写入正确的位置。