2014-09-30 142 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

相關問題