我正在尝试添加工作到cron, ım有这个问题:
You must source this script: $ source /home/flask/bin/activate
当我尝试使用.
在其位置````源' ' '
那么问题是:
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
。这可能不是你想要的。(它将使foo
对shell环境所做的任何更改对bash实例都是本地的,因此对bar
是不可见的)。此外,foo应该是一个文件名,因此.
在那里不起作用(因此使用"。是目录"消息)。
It might work to do
bash -c ". /whatever/activate; python3 foo.py"
,但我建议把所有需要的东西放在一个shell脚本中,并从cron调用该脚本。
我不确定tty的东西。看起来有些东西真的想要与终端通信,但那可能是您的bash_profile或类似的东西,因为您正在使用-l
运行bash。
我用这个修复了它:
SHELL=/bin/bash
PYTHONPATH="/home/flask/"
* * * * * bash -c ". /home/flask/bin/activate; python3 application/script/myscript.py"
感谢Ture p