当我的覆盆子pi靴子时,我试图开始一些过程。但出于某种原因,它并没有像预期的那样发挥作用。想法是启动Xvfb和一些jar文件。
所以,我创建了一个脚本
Xvfb :99 > /var/log/xvfb.log 2>&1
java -jar /home/pi/selenium-server/selenium-server-standalone-2.42.2.jar > /var/log/selenium.log 2>&1
echo "Servers started" >> /var/log/start_server.log
date >> /var/log/start_server.log
然后用cronjob开始这个脚本:@reboot /var/bootscripts/start_servers
但出于某种原因,jar文件还没有开始'一点都不是因为我把所有东西都发送到日志文件了吗?
更新
好的,我找到了一些关于编写启动脚本的信息,所以我修改了我的脚本。
#! /bin/sh
# /etc/init.d/blah
#
# Run always
> /var/log/xvfb.log # clear log
date >> /var/log/test-server.log # write date to log
> /var/log/xvfb.log # clear log
date >> /var/log/xvfb.log # write date to log
Xvfb :99 > /var/log/xvfb.log 2>&1 # write output to log
> /var/log/selenium.log # clear log
date >> /var/log/selenium.log # write date to log
java -jar /home/pi/selenium-server/selenium-server-standalone-2.42.2.jar > /var/log/seleni$
echo "Servers started" >> /var/log/test-server.log
# Carry out specific functions when asked to by the system
# to do
case "$1" in
start)
echo "Starting script blah "
echo "Could do more here"
;;
stop)
echo "Stopping script blah"
echo "Could do more here"
;;
*)
echo "Usage: /etc/init.d/blah {start|stop}"
exit 1
;;
esac
exit 0
它没有完成(#to do),但我首先要测试应该始终运行的命令。好吧,xvfb启动(日志很完美),但java服务器没有。 selenium.log文件没有创建(所以它没有达到我想的那段代码)。
如果我看到test-server.log我只看到日期,所以echo命令也不起作用,或者更好地说:它没有达到命令。
答案 0 :(得分:1)
您很可能遇到cron作业和init脚本的常见问题:环境变量未设置为您期望的值。
我建议明确设置变量。设置PATH和HOME值。如果selenium服务器需要GUI,那么在启动Xvfb后,您需要设置DISPLAY和XAUTHORITY。您可能也需要USER。
对此的另一个评论:我不建议用cron作业做这个,虽然它会起作用。最好使用SysV init脚本或Upstart作业或systemd单元执行此操作,具体取决于Pi正在运行的内容。
答案 1 :(得分:0)
一般来说,在编写cron作业时,我通常采用这种方法:
这可能是我在cron作业问题上读过的最好的文章......我的浏览器中没有多少书签,但这只是其中之一。
http://www.alleft.com/sysadmin/common-cron-mistakes/
那里写的大部分问题都是我写的。这是你第一次很难做到的事情,所以通常需要几次迭代才能做到正确。
答案 2 :(得分:0)
我解决了这个问题,我在这里分享了它:http://pastebin.com/PsBawgqK
要在启动时运行,我将命令添加到/etc/rc.local。但首先我在全球范围内提供了它:cp test-server /usr/bin/
希望这会对某些人有所帮助。