我尝试在 Debian 服务器启动时启动一些软件 (VLC)。我尝试了在不同来源中找到的几种方法(更改/etc/rc.local
、在 中创建脚本/etc/init.d/
并使用update-rc.d
或添加脚本rcconf
),但最终在重启后,我始终没有看到 VLC 进程在运行。
所以我的问题是:
- 我在启动脚本中做错了什么吗(如下所示)?
rcconf
在文件名前面显示一个星号,所以我假设脚本已链接到正确的运行级别? - 有什么方法可以查看系统尝试启动 VLC 时是否发生错误?我查看了不同的
/var/log/
文件,但没有任何结果……
启动脚本:
#! /bin/sh
case "$1" in
start)
su - shtong -c "vlc -I http --http-album-art --http-host=0.0.0.0:8000 --no-playlist-autostart --configlcrc ~/default.xspf"
exit 0;
;;
restart|reload|force-reload)
echo "Error: argument '$1' not supported" >&2
exit 3
;;
stop)
;;
*)
echo "Usage: $0 start|stop" >&2
exit 3
;;
esac
答案1
我希望这是一个评论而不是一个答案,但我的水平还不够来做到这一点。
我在定义与 crontab 相关的操作时遇到了同样的问题。长话短说,它在不同的环境中执行(我认为是出于安全原因),我建议对“vlc”等命令以及几乎所有命令使用绝对路径。
你可以使用以下方式查找路径
which command
此外。我不会用 vlc 做那个 su 操作。启动脚本可能无论如何都会由超级用户运行,不是吗?这不应该造成麻烦,超级用户可以无限地使用 sudo(理论上),但这并不好。
希望这至少能给你一些启发。此外,如果遇到错误,请发布,错误对于诊断总是很有帮助的。
答案2
感谢 DerfK,我能够打开启动日志并看到我的命令在系统启动时显示一些错误消息(手动启动时运行良好)。
总而言之,我修改了/etc/default/bootlogd
文件以添加此行:
BOOTLOGD_ENABLE=Yes
此后,错误在 中可见/var/log/boot
。
(此外,为了完整起见,问题在于 --configlcrc 参数无效,并且由于某种原因,当我在命令行中直接测试该命令时 VLC 没有抱怨,但在启动时执行时却抱怨..)