我正在尝试将多个 Zope-Instances 配置为 FreeBSD 中的守护进程。每个实例在/usr/local/etc/rc.d中都有一个启动脚本。启动工作正常,但调用状态或停止是有问题的,因为正在运行的实例的 PID 会混淆(虽然 PID 不同,但 startscript 无法区分它们)。
这是rc脚本的模板:
instancename="%%instancename%%"
name="$instancename"
rcvar="${name}_enable"
zope="/usr/local/opt/zope"
python="${zope}/bin/python"
command_interpreter="$python"
command="${zope}/bin/runwsgi -v /usr/local/www/zope-instances/${instancename}/etc/zope.ini -d"
start_cmd="/usr/sbin/daemon -u myuser $command"
load_rc_config "$name"
run_rc_command $*
对于每个实例,“%%”之间的值设置不同。
当我尝试获取状态或停止进程(service instancename status
或service instancename stop
)时,使用最后一个启动实例的 PID。对于能够创建 pid 文件的进程,情况并非如此,但我需要的脚本 runwsgi 不会创建 pid 文件。
我知道默认为命令变量的procname用于区分进程,但我不知道如何根据需要正确设置它。