gpt4 book ai didi

linux - 登录前在后台运行脚本

转载 作者:太空宇宙 更新时间:2023-11-04 05:38:46 25 4
gpt4 key购买 nike

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

我已经将它放在 rc.local 文件中,其中包含一个 & 符号。这有效。

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

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

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

编辑:我采用了下面关于使用 tail 的 Nirk 解决方案。从命令行来看,它工作得很好。但在 /etc/rc.local 中启动它却不会。我已touch该文件,并且每个人都对其具有写入权限。

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

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

更新我最终是这样做的:

虽然问题只是关于如何在登录之前在后台运行,但还有更多内容。该脚本是一项正在进行中的工作,由于特定串行设备与其交互的方式,它很容易崩溃(我几乎已经解决了所有错误)。我也需要能够重新启动它。我尝试了 nohup 但由于某种原因,它无法使其保持事件状态,所以最后我从 this 找到了最佳答案页面已全部排序。

在我的 /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 的重定向意味着我可以设置尾部(和/或返回并检查)日志。

最佳答案

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

关于linux - 登录前在后台运行脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17900083/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com