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