Hello,

I'm trying to write a startup script for an application called netbox (it's an 
opensource IPAM).

I created a user and a group
# grep netbox /etc/group
_netbox:*:9994:
# grep netbox /etc/passwd
_netbox:*:9994:9994::/home/netbox:/sbin/nologin

And I have this script
#!/bin/ksh

_BASEDIR=/var/www/htdocs/applications/netbox-4.0.7

daemon="${_BASEDIR}/env/bin/gunicorn"
daemon_flags="--name netbox --pid /var/run/netbox.pid --user=www --group=www 
--config=${_BASEDIR}/gunicorn.py"
daemon_flags="${daemon_flags} --log-level=info --log-file=- netbox.wsgi"
daemon_user="_netbox"

. /etc/rc.d/rc.subr

pexp="${_BASEDIR}/env/bin/python3.10 ${daemon}${daemon_flags:+ ${daemon_flags}}"
rc_reload=YES
rc_bg=YES

echo "pkill -f ${daemon}"

APPDIR=${_BASEDIR}/netbox

rc_pre() {
        cat <<EOF>/var/run/netbox_start
APPDIR=${_BASEDIR}/netbox

packages:${APPDIR}${PYTHONPATH:+:${PYTHONPATH}}
cd ${_BASEDIR}/netbox
. ${_BASEDIR}/env/bin/activate
export 
PYTHONPATH=${_BASEDIR}/env/lib/python3.10/site-packages:${APPDIR}${PYTHONPATH:+:${PYTHONPATH}}
exec gunicorn ${daemon_flags}
EOF
        chmod u+x /var/run/netbox_start
        chmod o+x /var/run/netbox_start
}

rc_start() {
        rc_exec /var/run/netbox_start
}

rc_stop() {
        pkill -f "${_BASEDIR}/env/bin/gunicorn"
}

rc_cmd $1

I have multiple problems:
i) When I do /etc/rc.d/netbox -d start I have this error message
# /etc/rc.d/netbox -d start
doing _rc_parse_conf
netbox_flags empty, using default >--name netbox --pid /var/run/netbox.pid 
--user=www --group=www 
--config=/var/www/htdocs/applications/netbox-4.0.7/gunicorn.py --log-level=info 
--log-file=- netbox.wsgi<
pkill -f /var/www/htdocs/applications/netbox-4.0.7/env/bin/gunicorn
doing rc_check
netbox
doing rc_pre
doing rc_start
doing _rc_wait_for_start
doing rc_check
doing rc_check
[2024-07-25 00:52:55 +0200] [61573] [INFO] Starting gunicorn 22.0.0
...
PermissionError: [Errno 13] Permission denied: '/var/run/tmp5jrbni2l'
doing _rc_rm_runfile
(failed)

I don't know why it's trying to create /var/run/tmp5jrbni2l

If I remove daemon_user="_netbox", everything works

Q1: What can I do to avoid this permission problem ? Because I'm not supposed 
to give write access to /var/run


ii) When I try to stop the process, it doesn't work
# ps ax | grep /var/www/htdocs/applications/netbox-4.0.7/env/bin/gunicorn
61611 p1  S        0:00.75 
/var/www/htdocs/applications/netbox-4.0.7/env/bin/python 
/var/www/htdocs/applications/netbox-4.0.7/env/bin/gunicorn --name netbox --pid 
/var/run/netbox.pid --user=www --group=www --config=/var/www/htdocs/appli
79274 p1  S        0:04.63 
/var/www/htdocs/applications/netbox-4.0.7/env/bin/python 
/var/www/htdocs/applications/netbox-4.0.7/env/bin/gunicorn --name netbox --pid 
/var/run/netbox.pid --user=www --group=www --config=/var/www/htdocs/appli
50615 p1  S        0:04.12 
/var/www/htdocs/applications/netbox-4.0.7/env/bin/python 
/var/www/htdocs/applications/netbox-4.0.7/env/bin/gunicorn --name netbox --pid 
/var/run/netbox.pid --user=www --group=www --config=/var/www/htdocs/appli
 9700 p1  S        0:04.08 
/var/www/htdocs/applications/netbox-4.0.7/env/bin/python 
/var/www/htdocs/applications/netbox-4.0.7/env/bin/gunicorn --name netbox --pid 
/var/run/netbox.pid --user=www --group=www --config=/var/www/htdocs/appli
88687 p1  S        0:04.14 
/var/www/htdocs/applications/netbox-4.0.7/env/bin/python 
/var/www/htdocs/applications/netbox-4.0.7/env/bin/gunicorn --name netbox --pid 
/var/run/netbox.pid --user=www --group=www --config=/var/www/htdocs/appli
72441 p1  S        0:04.05 
/var/www/htdocs/applications/netbox-4.0.7/env/bin/python 
/var/www/htdocs/applications/netbox-4.0.7/env/bin/gunicorn --name netbox --pid 
/var/run/netbox.pid --user=www --group=www --config=/var/www/htdocs/appli

# /etc/rc.d/netbox -d stop
doing _rc_parse_conf
netbox_flags empty, using default >--name netbox --pid /var/run/netbox.pid 
--user=www --group=www 
--config=/var/www/htdocs/applications/netbox-4.0.7/gunicorn.py --log-level=info 
--log-file=- netbox.wsgi<
pkill -f /var/www/htdocs/applications/netbox-4.0.7/env/bin/gunicorn
doing _rc_parse_conf /var/run/rc.d/netbox
doing rc_check

# ps ax | grep /var/www/htdocs/applications/netbox-4.0.7/env/bin/gunicorn
61611 p1  S        0:00.78 
/var/www/htdocs/applications/netbox-4.0.7/env/bin/python 
/var/www/htdocs/applications/netbox-4.0.7/env/bin/gunicorn --name netbox --pid 
/var/run/netbox.pid --user=www --group=www --config=/var/www/htdocs/appli
79274 p1  S        0:04.66 
/var/www/htdocs/applications/netbox-4.0.7/env/bin/python 
/var/www/htdocs/applications/netbox-4.0.7/env/bin/gunicorn --name netbox --pid 
/var/run/netbox.pid --user=www --group=www --config=/var/www/htdocs/appli
50615 p1  S        0:04.15 
/var/www/htdocs/applications/netbox-4.0.7/env/bin/python 
/var/www/htdocs/applications/netbox-4.0.7/env/bin/gunicorn --name netbox --pid 
/var/run/netbox.pid --user=www --group=www --config=/var/www/htdocs/appli
 9700 p1  S        0:04.11 
/var/www/htdocs/applications/netbox-4.0.7/env/bin/python 
/var/www/htdocs/applications/netbox-4.0.7/env/bin/gunicorn --name netbox --pid 
/var/run/netbox.pid --user=www --group=www --config=/var/www/htdocs/appli
88687 p1  S        0:04.17 
/var/www/htdocs/applications/netbox-4.0.7/env/bin/python 
/var/www/htdocs/applications/netbox-4.0.7/env/bin/gunicorn --name netbox --pid 
/var/run/netbox.pid --user=www --group=www --config=/var/www/htdocs/appli
72441 p1  S        0:04.08 
/var/www/htdocs/applications/netbox-4.0.7/env/bin/python 
/var/www/htdocs/applications/netbox-4.0.7/env/bin/gunicorn --name netbox --pid 
/var/run/netbox.pid --user=www --group=www --config=/var/www/htdocs/appli

However when I launch this command it works
# pkill -f /var/www/htdocs/applications/netbox-4.0.7/env/bin/gunicorn
# [2024-07-25 01:01:20 +0200] [61611] [INFO] Handling signal: term
[2024-07-24 23:01:20 +0000] [9700] [INFO] Worker exiting (pid: 9700)
[2024-07-24 23:01:20 +0000] [72441] [INFO] Worker exiting (pid: 72441)
[2024-07-24 23:01:20 +0000] [79274] [INFO] Worker exiting (pid: 79274)
[2024-07-24 23:01:21 +0000] [88687] [INFO] Worker exiting (pid: 88687)
[2024-07-24 23:01:21 +0000] [50615] [INFO] Worker exiting (pid: 50615)
[2024-07-25 01:01:22 +0200] [61611] [INFO] Shutting down: Master

Q2: It's supposed to match 
/var/www/htdocs/applications/netbox-4.0.7/env/bin/gunicorn but the process is 
not killed.
Do you see any reason why ?

Thank you

Reply via email to