FreeBSD:如何将 python 脚本作为守护进程启动?

FreeBSD:如何将 python 脚本作为守护进程启动?

我遇到了一个 python 文件问题,我想将其作为服务启动。我将我的服务命名为 ocrserver,我想要启动的脚本位于 /home/administrator/ocr/ocrserver/在里面.py 添加了一些参数,例如 --address --port 等...阅读了文档后FreeBSD 网站

我写了以下脚本:

#!/bin/sh

# $FreeBSD$
#
# PROVIDE: ocrserver 
# REQUIRE: NETWORK
# KEYWORD: shutdown

# add the following line to /etc/rc.conf to enable the ocrserver:
# ocrserver_enable="YES"

. /etc/rc.subr

name="ocrserver"
rcvar="ocrserver_enable"

# default values
: ${ocrserver_enable="NO"}

base_path="/home/administrator/ocr/ocrserver"

address="localhost"
http_port=8080
pyproxy_port=10800

log_level="debug"

pidfile="${base_path}/ocrserver.pid"

command="/usr/sbin/daemon"

# -p : daemon handler pidfile
# -f : redirect stdout and stderr to /dev/null
# -c : change working dir to root
command_args="-p ${pidfile} -f -c /home/administrator/ocr/ocrserver/__init__.py \
--address ${address} --http-port ${http_port} --log-level ${log_level} \
--pyproxy-port ${pyproxy_port}"

procname="/home/administrator/ocr/ocrserver/__init__.py"
command_interpreter="/usr/local/bin/python3.3"

load_rc_config $name
run_rc_command "$1"

然后我在 /etc/rc.conf 文件中添加一行将相应的 rcvar 设置为 YES。我启动了它:

sudo service ocrserver start 我收到消息“正在启动 ocrserver”。输入 sudo service ocrserver status 后,我可以看到该服务没有运行。我还运行了 pgrep -l python3.3 命令来查看是否有任何 python3 进程正在运行但没有结果

我准确地说,我对该文件执行了 chmod 755,以使其可供所有用户读取和执行。

有人对这种事情有经验吗?

感谢您的回答。

相关内容