如何以编程方式添加新的 crontab 文件而不替换先前的文件

如何以编程方式添加新的 crontab 文件而不替换先前的文件

我正在使用树莓派(操作系统-Raspbian)开发一个小型家庭自动化项目。

我想知道如何使用 python-crontab 模块添加多个 crontab 文件而不替换crontab -e?中的先前条目

我想以编程方式(无需手动前往crontab -e并添加文件)安排两个 python 脚本 - 第一个脚本每 5 分钟后执行一次,另一个脚本每 2 分钟后执行一次。

我成功地使用 python-crontab 模块安排了第一个脚本,但是当我安排第二个脚本时,它替换了crontab -e.那么如何安排新的 crontab 文件而不替换之前的文件呢?

如果有另一种 crontab 调度方式,请使用示例代码提出建议:)

注意:- 我想仅使用 python 脚本在 crontab 中安排 python 脚本,而不是手动添加crontab -e.

答案1

如果你想编写一个脚本来在 cron 中添加条目(不使用文本编辑器crontab -e),它会是这样的:

  • 运行crontab -l到临时文件
  • 检查您的最新命令是否已在文件中。如果是这样,请停止。
  • 将最新命令追加到临时文件中
  • crontab使用临时文件作为参数运行,以替换预定的命令

以供参考:

答案2

既然 crontab 毕竟是文本文件,为什么不直接附加文本呢?

with open("/var/spool/cron/crontabs/john", "a") as ctfile:
    ctfile.write("1 0 * * 3 /path/to/newcommand --option")

答案3

crontab -e实际上是一个列出所有 cronjobs 的文件。

当您键入时,crontab -e您将获得以前的 cronjobs 和 tildas ( ~) 的列表。

按键盘上的插入按钮在模式之间切换,然后在最后一个 cronjob 结束时按 Enter 键。

它将删除 tilda,您可以在此处编写新的 cronjob。

要退出插入模式,请按 escape 并输入:wq!以保存更改。

相关内容