当前位置: 首页 > 面试题库 >

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

盖高畅
2023-03-14
问题内容

我已经编写了一个Python脚本,该脚本检查特定的电子邮件地址并将新的电子邮件传递给外部程序。如何获得此脚本以执行24/7,例如在Linux中将其转换为守护程序或服务。我是否还需要一个永无休止的循环,还是仅需多次重新执行代码就可以完成?


问题答案:

您在这里有两个选择。

  1. 进行适当的 cron作业 来调用您的脚本。Cron是GNU / Linux守护程序的通用名称,该守护程序会根据您设置的时间表定期启动脚本。您可以将脚本添加到crontab中,或将其符号链接放置到特殊目录中,然后守护程序将在后台启动该脚本。您可以在Wikipedia上阅读更多内容。有各种不同的cron守护程序,但是您的GNU / Linux系统应该已经安装了它。

  2. 对脚本使用某种 python方法 (例如,一个库),使其能够守护自己。是的,这将需要一个简单的事件循环(您的事件可能是计时器触发的,可能是由睡眠功能提供的)。

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

另外,如果您使用带有循环的守护进程而发生崩溃,则此后没有人会检查邮件(如IvanNevostruev在对此答案的评论中指出的)。如果脚本是作为cron作业添加的,它将再次触发。



 类似资料:
  • 问题内容: 哈o 我试图让python脚本在(ubuntu)linux上作为服务(守护程序)运行。 在网络上,存在几种解决方案,例如: http://pypi.python.org/pypi/python- daemon/ 行为规范的Unix守护进程很难正确执行,但是每个守护程序所需的步骤几乎相同。DaemonContext实例保存程序的行为和配置的进程环境。使用实例作为上下文管理器进入守护程序状

  • 问题内容: 使Perl脚本作为守护程序在Linux中运行的简单方法是什么? 目前,这是在CentOS上。我希望它从系统启动,然后从系统关闭,因此一些集成也不错,但是我总是可以向添加一个自定义行。 问题答案: 最简单的方法是使用Proc :: Daemon。 或者,您可以执行Proc :: Daemon的所有操作: 分叉一个孩子并退出父进程。 成为会话负责人(将程序与控制终端分离)。 分叉另一个子进

  • 问题内容: 我有一个简单的Python脚本充当守护程序。我试图创建systemd脚本,以便能够在启动过程中启动此脚本。 当前的systemd脚本: node.py: 包含循环。 我尝试使用运行该服务。不幸的是,服务从未完成说明序列-我必须按Ctrl + C。脚本正在运行,但是状态为激活,一段时间后变为停用状态。现在我正在使用(但是在我尝试不使用它之前,症状是相似的)。 我应该为脚本实现一些其他功能

  • 问题内容: 我有一个脚本,该脚本每隔X次运行一次我的PHP脚本: 如何将其作为守护程序启动? 问题答案: 要将其作为完整的守护程序从Shell运行,您需要使用并重定向其输出。您可以将输出重定向到日志文件,也可以将其丢弃。假设您的脚本名为myscript.sh,请使用以下命令: 这会将进程与当前的shell(stdin,stdout和stderr)完全分开。如果要将输出保留在日志文件中,请用/ pa

  • 我有一个简单的Python脚本作为守护程序工作。我正在尝试创建systemd脚本,以便能够在启动期间启动此脚本。 当前systemd脚本: node.py: < code>run包含< code>while True循环。 我尝试使用< code > system CTL start zebra-node . service 运行此服务。不幸的是,服务从来没有完成状态序列-我必须按下Ctrl C。

  • 问题内容: 我想在CENTOS服务器中运行python脚本: 我正在使用它,并且工作正常…问题是:即使关闭ssh控制台后,如何保持此脚本运行? 问题答案: 我使用此代码来守护我的应用程序。它允许您使用以下命令来编写脚本。 除此之外,我还有一个init.d脚本来控制我的服务。这使您可以在操作系统启动时自动启动服务。 这是一个简单的示例,可以助您一臂之力。只需将代码移到一个类中,然后从内部的函数中调用