我将Gnome Do用作大多数事情的启动器。我将其设置为在登录时运行,并且在大多数情况下,它都位于后台,等待我取消键盘快捷键。大约每周一次,它掉下来了。我捣毁了快捷方式,但没有任何反应。我必须重新启动它。
这并不令人讨厌,但是我想知道是否有什么好的方法可以确保桌面应用程序永远运行。如果它们死了,它们将被重新启动(也许会发生崩溃超时,因此如果它在加载时崩溃,它就不会继续尝试一遍又一遍地运行它)。
我知道有些应用程序可以做到这一点。在Gnome2上,如果gnome-panel没有运行,则系统会强制加载它。有没有一种简单的方法可以利用这种逻辑(当然,不会破坏Gnome)。
我不希望这个问题对Gnome Do甚至Gnome都太具体,因为我有一个以上的解决方案应用程序(我在媒体中心的OpenBox桌面上运行Boxee),而且我敢肯定其他人都有他们的解决方案自己想通过此类方法解决的问题。
另一个不太优雅的解决方案:
#!/bin/bash
threshold=2
program="$1"
while true; do
start=$(date +%s)
"$program"
ret_val=$?
stop=$(date +%s)
if [[ ret_val -eq 0 ]]; then
# normal exit, quit
exit 0
else
# abnormal exit, check runtime. if < threshold quit
runtime=$((stop - start))
if [[ runtime -lt $threshold ]]; then
echo "crash on start"
exit 1
fi
fi
done
如果程序(第一个参数)以返回代码!= 0退出并且运行了至少阈值秒,则它将重新启动。
我尝试使用重生和重生限制选项创建Upstart作业,但是以某种方式失败了。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句