python - 如何使 Python 脚本像 Linux 中的服务或守护程序一样运行

我编写了一个 Python 脚本来检查某个电子邮件地址并将新电子邮件传递给外部程序。我怎样才能让这个脚本 24/7 执行,例如在 Linux 中把它变成守护进程或服务。我是否还需要一个在程序中永不结束的循环,还是可以通过多次重新执行代码来完成?

最佳答案

这里有两个选择。

  1. 制作一个适当的 cron 作业 来调用您的脚本。 Cron 是 GNU/Linux 守护程序的通用名称,它根据您设置的计划定期启动脚本。您将脚本添加到 crontab 中或将符号链接(symbolic link)放置到特殊目录中,守护程序会处理在后台启动它的工作。您可以read more在维基百科。有多种不同的 cron 守护程序,但您的 GNU/Linux 系统应该已经安装了它。

  2. 使用某种 python 方法(例如,一个库)让您的脚本能够自行守护进程。是的,它需要一个简单的事件循环(您的事件是定时器触发,可能由 sleep 函数提供)。

我不建议您选择 2.,因为实际上您会重复 cron 功能。 Linux 系统范式是让多个简单的工具交互并解决您的问题。除非有其他原因需要您制作守护程序(除了定期触发),否则请选择其他方法。

另外,如果你使用 daemonize 和一个循环并且发生了崩溃,那么之后没有人会检查邮件(正如 Ivan Nevostruev 在对 this 答案的评论中指出的那样)。而如果脚本作为 cron 作业添加,它只会再次触发。

https://stackoverflow.com/questions/1603109/

相关文章:

python - 如何在 Python 3.x 和 Python 2.x 中使用 pip

python - Django Admin - 更改标题 'Django administratio

python - 是否可以在列表理解中使用 'else' ?

linux - 在远程 Linux 机器上编译 C++ - "clock skew detected

python - 为什么打印到标准输出这么慢?可以提速吗?

linux - 从 URL 执行 bash 脚本

python - 何时使用 Tornado,何时使用 Twisted/Cyclone/GEvent/

linux - 如何在 Linux 上将所有文件夹和文件重命名为小写?

python - 为什么在 Pylint 认为不正确的条件值中使用 len(SEQUENCE)?

linux - 如何在 Bash 中给定超时后杀死子进程?