Cron 晚上找不到文件?

Cron 晚上找不到文件?

我有一个 cron 任务被写入 root(我正在写入日志,/var/log因此需要 root 权限)。问题是它有时有效,有时无效。

cron 作业只是调用我主目录中的 python 脚本,然后它就会完成所有艰苦的工作。

我将工作设置为在半夜执行,这样它就不会干扰我正在做的事情,并且它与之交互的 API 不太可能发生变化(API 全天更新)。

但是每天早上我检查日志都会出现以下错误:

python3: can't open file '/home/myUser/path/to/the/main.py': 
[Errno 2] No such file or directory

我对此的回应是将 crontab 上的时间更改为比我检查日志的时间长几分钟,等待几分钟,然后文件开始运行。仅有的我改变的是时间,然后它突然就起作用了。

所以我确信该文件存在。

我尝试过晚上的不同时间(30 23 * * *, 01 01 * * *, 10 02 * * *)都没有用,但只要我在早上检查后将其关闭 2 分钟,就可以了。

以下是当前的 crontab:

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

01 01 * * * python3 /home/myUser/path/to/the/main.py >> /var/log/thisjobs.log 2>&1

还值得一提的是,这项工作后还有一个额外的换行符(我听说这是必要的)。

有人见过这种情况吗?我可以尝试什么方法来找到这个文件,而不必每次都手动更改脚本?

编辑:这是我的env输出cron

LANGUAGE=en_GB:en
HOME=/root
LOGNAME=root
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
LANG=en_GB.UTF-8
SHELL=/bin/sh
PWD=/root

还想提一下,我曾尝试使用以下命令(在计时之后)但无济于事(同样的错误,但只是用main.py完整路径代替):

cd /home/myUser/path/to/the; python3 main.py

答案1

原来答案是这样的:Cron 在晚上失败

我整晚都在我的服务器上运行这个程序(我只ssh登录过)。因此,拥有一个加密的主驱动器意味着,当我没有登录时,除了 之外的任何东西都无法访问home,包括cron

我将脚本移到了/usr/local/bin(可能有更好的地方放它,但我觉得没有其他合适的地方),这意味着我可以在没有任何路径的情况下调用它(假设你已经设置了变量PATH)。

现在一切都正常进行。

相关内容