从 init.d 服务重新启动计算机

从 init.d 服务重新启动计算机

我正在使用 init.d 脚本在 xubuntu 驱动的机器上启动类似 kiosk 的应用程序。脚本如下所示:

#!/bin/sh

### BEGIN INIT INFO
# Provides:     myapp 
# Required-Start:   $syslog $local_fs $remote_fs $named $xdm $lightdm $dbus
# Required-Stop:    $syslog $local_fs $remote_fs 
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# X-Interactive:     true
# Short-Description:    Start myapp
# Description:       
#                    
### END INIT INFO

PATH="/sbin:/bin:/usr/sbin:/usr/bin"
NAME=myapp

export XAUTHORITY=/home/myuser/.Xauthority
export DISPLAY=:0

case "${1}" in
  start)
    xfce4-power-manager
    sudo /sbin/runuser myuser -s /bin/bash -c /usr/local/bin/myscript.sh
        ;;
  stop)
        echo -n "Stopping myapp..."
        killall myscript.sh
        ;;
  restart|reload)
        "$0" stop
        "$0" start
        ;;
  *)
        echo "Usage: $0 {start|stop|restart}"
        exit 1
    ;;
esac

exit 0

myscript.sh文件启动一个 NodeJS 应用程序,并以非 root 用户身份启动全屏浏览器。但是,有时我需要最终用户能够重新启动机器。我reboot从 NodeJs 调用本机命令,当我从标准 shell(执行myscript.sh)启动应用程序时,此命令有效,但当我将其作为 init.d 服务执行时,此命令无效。它似乎缺少一些权限。这是我在中得到的错误syslog

Failed to open /dev/initctl: Permission denied

任何想法?

相关内容