【问题标题】:How to run a python script between a particular times every single day (on Linux)?如何在每天的特定时间之间运行 python 脚本(在 Linux 上)?
【发布时间】:2021-03-09 09:31:25
【问题描述】:

我正在寻找一种能够在一天中的特定时间运行 python 脚本然后让它在一天中的另一个时间自动终止的方法。理想情况下,我不希望在脚本本身内完成此操作。

例如:我希望脚本在 08:00 开始,在 10:00 结束,然后在 11:30 重新开始,然后在 15:00 结束,我需要每天自动执行此操作。

我在网上浏览了很多建议,其中许多建议使用cron,但是据我所知,cron 本身并没有提供自动终止应用程序的功能。

其他人有suggested 使用 cron 在特定时间启动应用程序,然后使用另一个 cron 实例创建一个“终止”文件,程序将在每次循环迭代时搜索该文件,如果该文件存在,则 python脚本将通过 sys.exit() 函数或其他方式终止,但是,这似乎很麻烦,更多的是一种解决方法,而不是真正的解决方案。

【问题讨论】:

    标签: python-3.x linux cron


    【解决方案1】:

    您可以使用 Jobber。您将能够随时随地启动脚本。 警告:Jobber 不是免费的。不过你可以免费试用。 Here 是 Jobber 网站的链接。

    【讨论】:

      【解决方案2】:

      您可以编写一个脚本,使用cron (https://unix.stackexchange.com/questions/12815/what-are-pid-and-lock-files-for) 创建一个锁定文件,并使用锁定文件来了解进程 ID,然后也使用 cron 终止具有该 ID 的进程

      【讨论】:

        【解决方案3】:

        在您确定进程名称是唯一可识别的之后,您可以执行类似的操作(实际上也使用cron)。

         0  8 * * * /path/to/unique_name.py& ( echo "pkill unique_name.py" | at 10:00 )
        30 11 * * * /path/to/unique_name.py& ( echo "pkill unique_name.py" | at 15:30 )
        

        编辑 1:

        还有“名称安全”版本(使用kill)。

         0  8 * * * /path/to/unique_name.py& echo kill $! | at 10:00
        30 11 * * * /path/to/unique_name.py& echo kill $! | at 15:30
        

        【讨论】:

        • determined that the process name is uniquely identifiable 是什么意思?是不是仅仅意味着python脚本名是唯一的?
        • 我正在使用pkill,它按名称杀死进程。如果你例如杀死了所有可能不是你想要的东西python。 @user13834264
        • 我的脚本产生了多个线程,因此将显示为操作系统的多个进程。我想我需要找到一种方法来查找主线程的进程 ID?
        • @user13834264 该pid确实是父进程之一。如果杀戮让所有的孩子都消失了,那你就太好了。
        猜你喜欢
        • 2020-11-01
        • 2017-09-25
        • 2015-11-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-04-18
        • 1970-01-01
        相关资源
        最近更新 更多