FreeBSD:无法停止由 rc.d 启动的程序(“未运行”)

FreeBSD:无法停止由 rc.d 启动的程序(“未运行”)

我已经创建了一个 rc 脚本来在启动时启动 gunicorn 作为守护进程。

#!/bin/sh

# PROVIDE: gunicorn_appleclue 
# REQUIRE: DAEMON

. /etc/rc.subr

name=gunicorn_appleclue
rcvar=gunicorn_appleclue_enable

pidfile="/var/run/gunicorn/${name}.pid"

command="/usr/sbin/daemon"
command_args="-p ${pidfile} -r -t django_appleclue /home/victor/.venv/appleclue/bin/gunicorn -b 0.0.0.0:8001 -w 4 --pythonpath /home/victor/applications/appleclue/appleclue-web appleclue.wsgi"

load_rc_config $name
run_rc_command "$1"

从某种意义上说,启动后服务就启动了。但我遇到的问题是尝试停止/重新启动服务时。

sudo service gunicorn_appleclue stop
gunicorn_appleclue not running? (check /var/run/gunicorn/gunicorn_appleclue.pid).

ls -la /var/run/gunicorn/gunicorn_appleclue.pid
-rw-------  1 root  wheel  3 May 15 14:25 /var/run/gunicorn/gunicorn_appleclue.pid

因此,gunicorn 正在运行,并且 pidfile 位于它要求我的位置。我是否遗漏了什么?

谢谢

答案1

procname您还需要设置,因为rc.subr检查该进程的 pid 和名称以匹配其预期,以防命令终止并且其他进程恰好获得了相同的 pid。

因此,在后面添加一行rcvar如下:

procname="/home/victor/.venv/appleclue/bin/gunicorn"

有关详细信息,请参阅rc.subr或阅读/etc/rc.subr

相关内容