-2

我有一个 python 脚本,我想在任何用户登录之前运行它。这是用于家庭自动化服务器的,我希望它在系统允许的情况下始终启动并运行。

我已经在rc.local文件中有它,包括一个&符号。这行得通。

但我看不到它产生的屏幕输出。

当我通过 SSH 登录到设备(它是一个运行 raspian 的树莓派)时,我可以使用screen它启动它,当我注销并重新登录时,它仍然存在。而且我可以看到脚本的输出。

但是当我尝试screenrc.local文件运行并随后登录检查时,脚本不存在(即ps aux | grep script.py确认)

编辑:我在下面接受了 Nirk 关于使用tail. 从命令行,它工作正常。但是从内部开始它/etc/rc.local不会。我已经touch编辑了该文件,并且每个人都可以对其进行写访问。

这是我rc.local文件中的内容:

python /home/pi/gateway.py &> /x10.log &

更新 这就是我最后的做法:

虽然问题只是关于如何在登录之前在后台运行,但还有更多问题。该脚本正在进行中,并且由于特定的串行设备对其进行操作的方式,它很容易/很容易崩溃(我几乎已经解决了所有的错误)。我还需要能够重新启动它。我试过nohup了,但由于某种原因,它不能让它活着,所以最后我找到了这个页面的最佳答案,把它全部整理好了。

在我的/etc/rc.local中,我包含了一个要运行的 shell 脚本:

nohup /home/pi/alwaysrun.sh > /home/pi/mha.log 2>&1 &

alwaysrun.sh包含:

#!/bin/bash
until python /home/pi/gateway.py; do
    echo "'gateway.py' exited with exit code $?. Restarting..." >&2
    sleep 1
done

nohup将使alwaysrun.sh脚本保持活力,从而使我的gateway.py脚本继续运行。stdout 和 stderr 的重定向意味着我可以设置一个尾部(和/或返回并检查)日志。

4

1 回答 1

3

如果您只想查看输出,而不是使用屏幕,您应该将命令的输出重定向到日志文件,然后跟踪文件。

于 2013-07-27T23:44:02.637 回答