gpt4 book ai didi

linux - 多进程 InitScript 逻辑

转载 作者:太空狗 更新时间:2023-10-29 12:38:16 25 4
gpt4 key购买 nike

我正在为我们的一些软件开发 initscripts,但我很难决定我应该如何将它用于特定的部分。

我们有自己开发的软件负责在网络中传递数据,它建立在标准的 pubsub 模型之上。有一个发布进程(实际上是两个不同的用例)、一个代理进程和一个订阅进程)。这些进程的任意组合,甚至是相同进程的多个,都可以在给定的盒子上同时运行。我无法决定如何最好地配置它。由于它可能因盒子而异,因此很可能会进入 /etc/sysconfig/pubsub,这将由 initscript 读取。

我唯一需要允许配置的是 (1) 进程名称,它是 log_publish、dir_publish、broker、subscribe 之一,以及 (2) 对应于该特定进程的配置文件。

我希望避免告诉人们如何修改每个框的 initscript 以更改正在运行的进程列表,因此这个每个框的唯一配置文件是我能想到的实现此目的的最佳方法。

我假设这也意味着我必须在盒子上为每个进程设置某种唯一标识符,因为我打算使用最常用的 touch/var/lock/subsys/* 方法RedHat initscripts 已经使用来锁定进程运行两次。知道这一点,我知道标识符不能总是随机的,否则它永远不会有效,以防止使用相同配置文件的重复进程(因为,同样,我需要能够运行具有不同配置文件的多个进程) .

我不知道如何最好地在配置中表示这一点。

最佳答案

我的实现方式与 VNC 作为初始脚本运行时的实现方式类似。

如果您查看发行版的 vnc init 配置文件(例如 RedHat/CentOS:/etc/sysconfig/vncservers),您会看到:

# The VNCSERVERS variable is a list of display:user pairs.
#
# Uncomment the line below to start a VNC server on display :1
# as my 'myusername' (adjust this to your own). You will also
# need to set a VNC password; run 'man vncpasswd' to see how
# to do that.
#
# DO NOT RUN THIS SERVICE if your local area network is
# untrusted! For a secure way of using VNC, see
# <URL:http://www.uk.research.att.com/vnc/sshvnc.html>.

# VNCSERVERS="1:myusername"
# VNCSERVERARGS[1]="-geometry 800x600"

非常简单。如果需要,您可以定义一个屏幕编号和要匹配的参数。

所以现在,我有,例如:

PUBSUBPROCS="1:publish 2:broker 3:subscribe"
PUBSUBARGS[1]="/config/publish.cfg"
PUBSUBARGS[2]="/config/broker.cfg"
PUBSUBARGS[3]="/config/subscribe.cfg"

大部分用于解析它的逻辑也从 vncserver 初始化脚本中删除,由于篇幅原因我不会在这里发布。

关于linux - 多进程 InitScript 逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4147276/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com