如何为这些命令创建cronjob?

2024-06-07 16:20:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我想创建一个cron作业,在虚拟环境中每天运行一个python脚本。因此,我尝试设置cron作业,但它似乎没有执行。你知道吗

如果我要从终端正常运行程序,我会键入:

  1. source ig/venv/bin/activat输入以激活我的虚拟环境

  2. cd ig/mybot/src/导航到我的目录

  3. python ultimate.py运行我的程序

到目前为止,克朗是我的工作。我把它设置为1,每分钟运行一次,这样我就可以看到它在工作,但什么也没发生。你知道吗

1   *   *   *   *   source ig/venv/bin/activate && cd ig/mybot/src/ && python ultimate.py

编辑:我已经更新了程序,因此不需要命令行提示。我只需要运行这三个简单的命令。


Tags: py程序src脚本终端sourcebinvenv
2条回答

您可以用另一个python脚本来结束这个过程。创建一个新的python脚本并运行它而不是cron。你知道吗

看看subprocess模块。你知道吗

示例: 您的命令将变成subprocess.call(['source','ig/venv/bin/activate']) 在包装器python脚本中。你知道吗

另外,input("Enter the value")将提示您输入用户信息。你知道吗

有了以上两个,你的问题将得到解决。你知道吗

这是个好主意,但如果你不能的话。你知道吗

#!/usr/bin/env bash

PYTHON_PROJECT_DIR=/path/to/python/project/dir

pushd ${PYTHON_PROJECT_DIR}

VALUES="first line of stream\nsecondline of stream\n"

pipenv run /path/to/your/script.py < (echo -e $VALUES)

popd

pushdpopd是与目录堆栈一起移动的命令,因此您将位于堆栈顶部的目录中,因此通过添加一个目录,您将移动到工作目录中,通过弹出,您将回到初始位置。你知道吗

使用pipenv允许您在虚拟环境中运行脚本(配置起来并不难),这样您就可以为项目使用.env文件中的环境变量,并且只使用此项目的依赖项。(与python相关)。你知道吗

如果像这样传递值,python脚本在从stdin请求值时,将使用您回送的值(逐行,第一行是第一个输入,以此类推)

这可能是一种方法。你知道吗

就我个人而言,每当我执行cronjobs时,我喜欢直接运行bash脚本,因为,我可以添加额外的日志记录,所以使用包装器脚本似乎没有那么不合理。你知道吗

您可以做的另一件事是获取python可执行路径(对于虚拟环境),并将其用作解释器,方法是将#!/usr/bin/env python替换为#!/path/to/pythons/virtual/env/interpreter 但是你不会得到.env variables(也许有一种方法可以得到它们)。你知道吗

相关问题 更多 >

    热门问题