Linux开始运行

时间:2014-06-11 23:17:37

标签: linux raspberry-pi

当我的覆盆子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命令也不起作用,或者更好地说:它没有达到命令。

3 个答案:

答案 0 :(得分:1)

您很可能遇到cron作业和init脚本的常见问题:环境变量未设置为您期望的值。

我建议明确设置变量。设置PATH和HOME值。如果selenium服务器需要GUI,那么在启动Xvfb后,您需要设置DISPLAY和XAUTHORITY。您可能也需要USER。

对此的另一个评论:我不建议用cron作业做这个,虽然它会起作用。最好使用SysV init脚本或Upstart作业或systemd单元执行此操作,具体取决于Pi正在运行的内容。

答案 1 :(得分:0)

一般来说,在编写cron作业时,我通常采用这种方法:

  1. 我想要放在cron中的确切命令行是否逐字地在命令行中工作?
  2. 如果是的话,创建一个在接下来的一两分钟内执行的cron,修改cron,然后等到时间过去并拖尾cron日志以确保它运行(显然检查crond正在运行)
  3. 如果可行,请将cron设置为使用正确的时间,否则调试脚本(很可能是脚本的环境/ JAVA_HOME)。
  4. 这可能是我在cron作业问题上读过的最好的文章......我的浏览器中没有多少书签,但这只是其中之一。

    http://www.alleft.com/sysadmin/common-cron-mistakes/

    那里写的大部分问题都是我写的。这是你第一次很难做到的事情,所以通常需要几次迭代才能做到正确。

答案 2 :(得分:0)

我解决了这个问题,我在这里分享了它:http://pastebin.com/PsBawgqK

要在启动时运行,我将命令添加到/etc/rc.local。但首先我在全球范围内提供了它:cp test-server /usr/bin/

希望这会对某些人有所帮助。