2

我有一个相当轻量级的脚本,我想每隔 5 小时左右在后台定期运行一次。该脚本通过几个不同的网站运行,扫描它们以寻找新材料,然后从它们中获取 .mp3 文件或根据它们的内容喜欢 youtube 上的歌曲。我想通过这个程序实现一些我不确定如何实现的事情:

  • 让程序每 5 小时运行一次——我不熟悉系统级的计时操作。
  • 让程序在后台有效运行——我希望这些“更新”在用户不知情的情况下发生。
  • 让程序在启动时激活——我知道我将如何将其设置为用户,但我不确定如何将这样的配置添加到 python 文件中,如果可能的话。请记住,这将是一个简单的 .py 脚本——我不会将它编译成可执行文件。

该程序的设计主要考虑了 OSX 和其他基于 Unix 的系统。关于实现其中一些目标的任何建议?

4

2 回答 2

4

如果您的脚本不需要经常执行,而且听起来好像不需要,我建议您设置一个 cron 作业。

在典型的 Linux 机器上,您可以crontab file通过以下方式编辑:

$ crontab -e

这将在您的标准编辑器中打开您的 crontab,并在您完成后为您安装 crontab 文件(即保存它)

一个典型的 crontab 命令如下所示:

# m h  dom mon dow   command
 15  0   *   *   *    /bin/bash /home/yourself/bin/dump_my_tables.sh

此行将在dump_my_tables.sh每天 00:15 执行。您的脚本将需要类似以下内容:

0  */5  *  *  *   /usr/bin/python /home/yourself/bin/scrape_the_web.py

注意:

  • 时间是机器的本地时间 (!)
  • 某些cron版本不接受*/5语法,您必须手动指定要安排脚本的时间,即0,5,10,15,20
  • 您可能想要重定向输出,但它超出了这个答案的范围
于 2013-01-30T21:36:32.360 回答
2

让程序每 5 小时运行一次——我不熟悉系统级的计时操作。

对于 nix cron 是完成此任务的默认解决方案

让程序在后台有效运行——我希望这些“更新”在用户不知情的情况下发生。

使用 cron 程序将在您的服务器的后台运行。用户不应受到它的不利影响。如果用户加载查看您已抓取的 mp3 的页面。然后在你的脚本运行/保存数据到数据库的过程中,用户点击刷新,新的 mp3 可能会出现,我不知道这是否是你在“用户不知道”的情况下所想到的

让程序在启动时激活——我知道我将如何将其设置为用户,但我不确定如何将这样的配置添加到 python 文件中,如果可能的话。请记住,这将是一个简单的 .py 脚本——我不会将它编译成可执行文件。

我很确定 cron 条目将在重新启动时持续存在,(我不是 100%),确保cron守护程序在启动时启动

于 2013-01-30T21:41:10.403 回答