我希望 xbmc 在启动时启动,并在崩溃时重新启动。目前,我自动登录用户(“public”)并将 xbmc 作为启动应用程序。但如果 xbmc 崩溃,它不会重新启动,这对我这个不懂电脑的家庭来说是个问题,但对我个人来说不是。由于我习惯使用 /etc/init/ 脚本,所以我遵循了本指南,创建以下脚本(但使用 USER=public 而不是 'xbmc'):
# xbmc-upstart
# starts XBMC on startup by using xinit.
# by default runs as xbmc, to change edit below.
env USER=xbmc
description "XBMC-barebones-upstart-script"
author "Matt Filetto"
start on (filesystem and stopped udevtrigger)
stop on runlevel [016]
# tell upstart to respawn the process if abnormal exit
respawn
script
exec su -c "xinit /usr/bin/xbmc --standalone -- -nocursor :0" $USER
end script
机器启动到 xbmc 时一切正常,但现在却没有声音!当我退出 xbmc 时,它会直接重新启动,这意味着我无法(至少我没有技能知道如何)从 Unity 检查声音设置。
关于如何使声音正常工作的建议?
答案1
我找到了一种可以解决我的问题的方法,其意义如下:
- 允许我在 xbmc 中自动启动
- 如果程序崩溃则重新启动 xbmc
- 它功能齐全:有声音并且视频运行正常。
我选择的做法是通过选择 Unity 中的选项以“正常”GUI 方式自动将 Ubuntu 启动到我的“公共”用户中。然后,我添加了一个进程监视器脚本来为我重新生成该程序。
方法如下:这个答案,我在用户‘public’的主目录中添加了以下脚本,并将其命名为‘process_monitor.sh’:
#!/bin/bash
if [[ -z "$1" ]];then
echo "ERROR: must specify program"
exit 1
fi
while (( 0 == 0 ));do
$@ &
pid=`jobs -l | awk '{print $2}'`
wait $pid
done
使脚本可执行后
chmod a+x ~/process_monitor.sh
我在“启动应用程序”中为用户“公共”添加了以下行(通过 Dash 访问,或至少在 12.04 中通过右上角的栏访问):
/bin/bash ~/process_monitor.sh /usr/bin/xbmc
这样,我现在可以在 xbmc 中自动启动,并具有完美的声音和视频功能,然后让监控脚本确保 xbmc 在崩溃时重生。也许不是最漂亮的解决方案,但它确实有效!