【问题标题】:Python + Cron: No such file or directory [duplicate]Python + Cron:没有这样的文件或目录[重复]
【发布时间】:2018-04-13 21:16:20
【问题描述】:

我有一个更新 .txt 文件的 python 脚本。

当我在终端中手动运行文件时,它会工作,它也会更新文件。但是,这似乎只有在使用 cron 运行时才会出现问题。

日志文件中的响应是:

没有这样的文件或目录:'uploads/test.txt'

为此的 cron 命令是:

* * * * * /usr/bin/python3 /root/script.py >> /root/log.log  2>&1

我真的被难住了。有什么解决办法吗?

【问题讨论】:

  • 您是否尝试过在script.py 中使用test.txt 文件的绝对路径?
  • 我试过~/root/uploads.test.txt是绝对路径吗?
  • 看起来不太对劲。试试/root/uploads/test.txt!没有~,这是当前用户主文件夹的路径。
  • @CharlesDuffy 显然我的意思是 / 不是 . 并且 uploads/test.txt 是运行脚本中的引用。
  • 默认情况下,cron 作业在/ 中运行,因此uploads/test.txt 将寻找/uploads/test.txt,而您可能没有。

标签: python cron


【解决方案1】:

uploads/test.txt 是相对路径。 Cron 未从 uploads 的父目录运行。使用绝对路径上传(例如/data/foo/uploads/test.txt,或cwd 到uploads 的父目录。

【讨论】:

  • 您可能还建议将cd /data/foo && exec python ... 作为替代方案(exec 只是一种性能优化——意味着在python 启动后shell 不需要在内存中停留—— - 但&& 很关键:意味着如果我们不能将cd 运行到脚本期望从其启动的目录,我们就不会尝试运行 Python 解释器)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-11
  • 2014-06-18
  • 2019-12-23
  • 2021-12-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多