2014-09-30 111 views
0


我需要在关闭ssh连接后继续在我的Raspberry Pi的后台运行我的Python程序,因为我需要将Phidg​​et信息保存在SQL DB
我尝试用nohup来做到这一点,但似乎python程序甚至没有执行。

因为当我看着MySQL数据库,下面做没有什么后插入。

我输入:
如何在终止ssh后继续在Raspberry Pi的后台运行Python程序

[email protected] ~/MyProjekt $ sudo nohup python sensorReader.py & 
    [1] 8580 

,当我尝试看看,如果这个过程中存在着白衣:

ps -A| grep 8580 

它没有返回。
那么我有什么问题吗?
如何在关闭SSH连接后运行python程序

回答

1

我不认为这是一个ssh连接问题,从你说的什么程序似乎执行并退出。您的.py执行无限循环吗?否则你不应该指望它保持活力。

然后,关于保持一个过程活着父已经终止(在你的情况下,壳)后,nohup的是答案,这意味着忽略HUP信号(那些由端接父进程发送)。

的“&”只是意味着“在后台执行”。

如果你的程序是要定期做某事,但如果它应该保持活着等待一些事件(比如听一个套接字),那么cron解决方案是很好的,我宁愿创建一个init scritp,这样程序在启动时作为恶魔运行,并且只在所需的运行级别运行。

+0

我的python程序没有循环。它正在等待Phidg​​et传感器值,并将这些信息保存在同一个Raspberry上的MySQL Db上。 – feldeOne 2014-10-01 10:39:20

+0

好,在这种情况下,cron作业也许是最好的(也是最简单的)解决方案(见Nonnib答案),但你不应该期待看到您的进程PID,当你的'ps aux'因为它看起来非常快速执行和它不会一直执行,它会定期产生。 – Oberix 2014-10-01 11:09:47

+0

我已经解决了我的屏幕问题。只需使用screen -S sessionXX启动一个新会话,并使用ctr + a => d来分离会话,并且我可以终止SSH连接。但我仍然需要一些作品的crontab。这就是为什么马克和你最好的答案 – feldeOne 2014-10-14 10:04:01

2

我建议在cron重新启动作业中运行您的python程序。

要编辑根cronjobs使用

sudo crontab -e 

,并添加行

@reboot sudo python full_path/MyProjekt/sensorReader.py 

然后重新启动PI:

sudo reboot 

然后确认你的进程正在运行:

ps -aux | grep python 
+0

的想法是好的,但它并没有真正发挥作用。该过程似乎正在运行,但程序不会将传感器信息写入SQL DB。任何想法 ? – feldeOne 2014-10-01 11:45:28

+0

您应该在您的python脚本中设置日志记录,以便您可以跟踪它正在执行的操作,因为您无权访问控制台输出。您可以通过追加2>&1 >> /tmp/mylogfile.log来将stdout和stderr管理到您的cron作业中的文件,然后查看是否获得了某些内容。 – Nonnib 2014-10-01 12:01:34

相关问题