То, что я сделал, просто добавляет создание папки непосредственно перед запуском-stop-deamon. Это работает, потому что сценарий обычно выполняется как root во время запуска. Он просто создает папку в / var / run и немедленно меняет владельца, поэтому PID можно записать.
В приведенном ниже примере я проверяю наличие подпапки / var / run, где i поместите PID как текущий пользователь, в этом случае пользователь «pi» (так как я на малине).
Также проверьте эту ссылку, так как это было очень познавательно для меня: скрипт Python для запуска в качестве сервиса , однако он не охватывал проблему, обсуждаемую здесь.
Пример части моего сценария оболочки:
# The process ID of the script when it runs is stored here:
PIDFILE=/var/run/power/$DAEMON_NAME.pid
do_start () {
log_daemon_msg "Starting system $DAEMON_NAME daemon"
if [ ! -d /var/run/power ]; then
mkdir /var/run/power/
chown pi:pi /var/run/power/
fi
start-stop-daemon --start --background --pidfile $PIDFILE --make-pidfile --user $DAEMON_USER --chdir $DIR --startas $DAEMON -- $DAEMON_OPTS
log_end_msg $?
}