我在屏幕上运行Raspberry Pi 2来显示网站。 Epiphany浏览器有时会意外关闭。
我试图创建一个脚本,如果它失败了将重新加载浏览器,我遇到的问题是有后续运行的xdotool命令我无法找到放置的位置。
这是我到目前为止所做的:
#!/bin/bash
until epiphany "http://localhost/index.php" ; do
echo "Service 'epiphany' crashed with exit code #?. Respawning..." >&2
sleep 1
done
此脚本运行,打开浏览器,如果进程被终止,将重新加载浏览器。我需要以下内容才能开始运行:
sleep 10
xdotool search --class epiphany windowactivate
xdotool key F11
这使顿悟全屏显示
while ps ax | grep -v grep |epiphany ; do
sleep 60
echo "Refreshing page"
xdotool search --class epiphany windowactivate
xdotool key F5
done
一分钟后刷新屏幕,每60秒重复一次。
我没有刷新网页的原因是,如果网络中断,它会在找不到网页的情况下将屏幕空白而不会再次重试。
感谢您的阅读。
答案 0 :(得分:1)
您可以将它们组合成一个脚本。 这将是合并文件:
combined.sh:
#/bin/bash
epiphany "http://localhost/index.php" &
sleep 10
xdotool search --class epiphany windowactivate
xdotool key F11
while ps ax | grep -v grep |epiphany ; do
sleep 60
echo "Refreshing page"
xdotool search --class epiphany windowactivate
xdotool key F5
done
service.sh
#/bin/bash
until combined.sh ; do
echo "Service 'epiphany' crashed with exit code #?. Respawning..." >&2
sleep 1
done
我正在做这件事,并没有覆盆子来测试,但它应该工作。第一个脚本不会停止直到顿悟关闭,当它关闭时,combined.sh会再次执行。
答案 1 :(得分:1)
这是我最终提出的解决方案:
screen.sh
ko.bindingHandlers.typeahead = {
init: function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {
var substringMatcher = function (strs) {
return function findMatches(q, cb) {
var matches, substringRegex;
// an array that will be populated with substring matches
matches = [];
// regex used to determine if a string contains the substring `q`
substrRegex = new RegExp(q, 'i');
// iterate through the pool of strings and for any string that
// contains the substring `q`, add it to the `matches` array
$.each(strs, function (i, str) {
// console.log(str);
if (substrRegex.test(str)) {
// the typeahead jQuery plugin expects suggestions to a
// JavaScript object, refer to typeahead docs for more info
matches.push({
value: str
});
}
});
cb(matches);
};
};
var $element = $(element);
var allBindings = allBindingsAccessor();
var source = ko.utils.unwrapObservable(valueAccessor());
var items = ko.utils.unwrapObservable(allBindings.items) || 4;
var valueChange = function (item) {
allBindings.value(item);
return item;
};
debugger;
$element.attr("autocomplete", "off")
.typeahead({
hint: true,
highlight: true,
minLength: 0,
selectable: 'Typeahead-selectable'
}, {
valueKey: 'value',
source: substringMatcher(source),
items: items,
updater: valueChange
});
}
};
web.sh
#!/bin/bash
if [ -a /home/pi/.config/epiphany/session_state.xml ];
then
rm /home/pi/.config/epiphany/session_state.xml;
fi
epiphany "http://localhost/index.php" &
sleep 10
xdotool search --desktop 0 --class epiphany-browser windowactivate
xdotool key F11
while ps ax |grep -v grep| grep epiphany; do
sleep 30
xdotool search --desktop 0 --class epiphany-browser windowactivate
xdotool key F5
done
如果您终止顿悟的pid,它将在下一个刷新周期(30秒)重启浏览器。
如果您关闭浏览器,它将退出该过程。