systemd 适合这个任务吗?

systemd 适合这个任务吗?

目前,有一个相当复杂的 Python 脚本,用于管理几台服务器上的几十个进程。每个进程都有相同的设置/要求:

  • 主进程必须启动并受到监控
  • 辅助网络进程必须出现并受到监控
    • 如果助手崩溃,请重新启动它
  • 用户必须能够发出命令来关闭主进程和辅助进程、压缩日志文件并进行自我清理。
  • 如果主进程死亡,则可能已经生成了核心,因此请压缩日志和核心,并终止辅助进程

目前,日志(主进程的标准输出)和核心被写入 /var/log/so-and-so/,这是一个 tmpfs 分区,用于加快速度。否则,Python 脚本会将 PID 文件放入 /run/so-and-so/ 中,以跟踪谁在做什么。

现在我的用户希望这些进程每天都自动启动。他们可能也希望这些进程在特定时间停止运行,但这还没有被要求。

我从未使用 systemd 做过任何事,除了启动一个脚本,所以我不确定如何让事情相互依赖,或者这项任务是否是一个合适的 systemd 项目。这就是我的问题。这是 systemd 应该做的事情吗?如果是,它应该是什么样子?

答案1

就我个人而言,我认为没有任何理由不能使用该系统运行systemd。从理论上讲,根据您的描述,甚至可以取消辅助进程,但这是一个设计决定。

另一方面,您描述的非特权方面也可以成为supervisordAPI 的候选,以便您可以根据角色向用户授予权限。这可能使用 systemd 是可能的 - 它当然可以使用在用户空间运行进程systemd- 但这取决于您想要向用户展示的复杂性。

相关内容