【问题标题】:How to use at command to set python script execute at specified time如何使用at命令设置python脚本在指定时间执行
【发布时间】:2011-04-16 01:02:25
【问题描述】:

当我将来尝试使用 cron 执行我的 python 脚本时,我发现在 AFAIK 有一个命令,该 cron 用于定期执行,但我的场景仅在指定时间内执行一次。 我的问题是如何将 python 脚本添加到 at 命令中, 还有一些python包用于控制at命令

我的开发操作系统是 ubuntu 10.04 lucid,我的产品服务器是 ubuntu-server 10.04 lucid 版本。 事实上,我想通过 python 脚本将 python 脚本任务添加到 at 命令,哪个文件的更改可以影响命令添加或删除新作业

【问题讨论】:

  • 如果您编辑 Q 以添加您完全跳过的关键信息(例如,您在哪个 系统 中运行?!),我们很乐意提供帮助。 (不,没有我听说过的 Python 包)。

标签: python cron package execute at-job


【解决方案1】:

正如手册页所说,at(例如,与 cron 相对)不尊重 shebang(#!/usr/bin/env python 行)。它总是使用/bin/sh 来运行文件。

因此,为了运行 python 脚本,您必须使用任一

echo python myscript.py | at 10:15

按照@bstpierre 的建议或创建一个附加文件

myscript.sh:

python myscript.py

然后

at -f myscript.sh at 10:15

这种方式不需要Shebangs(但也不会伤害)。

【讨论】:

  • 我能想到的对这种奇怪行为的一个合乎逻辑的解释是,-f 标志后来出现,为了保持向后兼容性,他们决定忽略 shebang(否则在 at i> 从标准输入和-f 指定的文件中读取相同的命令会给出不同的结果)
【解决方案2】:

这适用于我的 linux 机器:

echo python myscript | at 10:15

编辑:愚蠢的引用...

【讨论】:

    【解决方案3】:

    做吧

    python FILE | at TIME > app.log
    

    替换: FILE - 你的 .py 文件(包括 shebang)

    TIME - 你的时间

    【讨论】:

    • 我做你给的,它给我一个警告,这是什么鬼? python /home/mlzboy/my/ide/test/c.py |在 now+2 分钟 >/home/mlzboy/haha.txt 警告:命令将在 2010 年 9 月 23 日星期四 10:27:00 使用 /bin/sh 作业 6 执行
    • @mizboy 你有shebang吗,在我看来终端认为你正在运行的是一个批处理脚本,或者它指的是它作为批处理脚本运行命令(在在这种情况下它是 bash 所以没关系)
    • 我在我的 py 脚本顶部添加了 1 #!/usr/bin/env python 2 #encoding=utf-8
    • 但是我还有另一个相关的问题,我如何才能捕获 at 命令当前执行任务的 pid 以写入文件
    • 这个答案是错误的。它将现在执行文件,请参阅@bstpierre 正确用法的答案。
    【解决方案4】:

    输入man at,它将解释如何使用它。不同系统的用法会略有不同,这里就不一一说了。

    【讨论】:

      猜你喜欢
      • 2015-09-28
      • 2021-10-06
      • 1970-01-01
      • 1970-01-01
      • 2021-10-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多