crontab 源命令

Crontab Source Command

我正在尝试向 cron 添加作业,我遇到了这个问题:

You must source this script: $ source /home/flask/bin/activate

当我尝试在其位置使用 . ````source```

那么问题来了:

mesg: ttyname failed: Inappropriate ioctl for device
.: .: is a directory

这是我的 crontab 文件:

SHELL=/bin/bash
PYTHONPATH="/home/flask/"
* * * * * bash -l  /home/flask/bin/activate && python3 application/script/myscript.py

任何帮助都会很棒,非常感谢。

当你的 crontab 中有这个时

bash -l foo && bar

cron(或者,更严格地说,由 cron 调用的 shell)首先进入 运行 bash -l foo,然后作为单独的命令,bar .这可能不是你想要的。 (它将对 shell 环境所做的任何更改都由 foo 在 bash 的实例本地完成,因此对 bar 是不可见的)。此外,foo 应该是一个文件名,因此 . 不会在那里工作(因此“. 是一个目录”消息)。

它可能会起作用

bash -c ". /whatever/activate; python3 foo.py"

但我建议将所有需要的东西放在一个 shell 脚本中,然后从 cron 调用该脚本。

我不确定 tty 的东西。看起来 真的 想要一个终端与之交谈,但那可能是你的 bash_profile 或类似的东西,因为你 运行ning bash 与 -l.

我用这个修复了它:

SHELL=/bin/bash
PYTHONPATH="/home/flask/"
* * * * * bash -c ". /home/flask/bin/activate; python3 application/script/myscript.py"



感谢 Nature Pålsson 的回答