題:
Raspberry Pi在啟動時自動啟動程序
Kersakov
2015-03-01 18:21:42 UTC
view on stackexchange narkive permalink

我建立了一個無線傳感器網絡,該網絡由兩個裝有傳感器的Raspberry Pi(runnnig Raspbian)和一個用於收集數據的基站Raspberry Pi組成。

每次我要運行系統時,我必須登錄每個傳感器單元並運行兩個循環的Python程序,一個用於收集傳感器數據,另一個用於傳輸到基站。

這些單元正進入無法訪問Internet的尷尬位置,因此需要一個監視器,用鍵盤和鼠標讓它們運行起來並不是一件容易的事。有什麼方法可以將它們設置為自動登錄,運行程序1,然後在啟動時自動運行程序2?

六 答案:
Xer0FyT
2015-03-01 18:38:02 UTC
view on stackexchange narkive permalink

您可以將這兩個程序添加到rc.local文件中。這將在啟動時運行它們。可以在 http://www.raspberrypi.org/documentation/linux/usage/rc-local.md中找到更多信息。

該文檔中似乎沒有使人絆倒的一點:請勿在rc.local本身中使用sudo。它在引導時以root特權運行。除非您的程序快速執行某些操作然後退出,否則請務必注意有關使用&的部分。
如果您想讓程序在網絡啟動後運行,並且將/path/to/somescript.sh&`改為rc.local,並在腳本中添加while! ping -c 1 -W 1 8.8.8.8;睡1完成;`在開始程序之前。
+ goldilocks問題在於,如果不事先運行sudo,就無法實現對rc.local的寫訪問。你有什麼建議?
dividuum
2015-07-07 23:28:32 UTC
view on stackexchange narkive permalink

Xer0FyT的答案可能是在PI上自動啟動程序的最簡單方法。但是,一旦啟動的程序由於某種原因而崩潰,因為沒有進程監視,它將不會重新啟動,就會出現問題。我個人建議使用 daemontools代替。設置非常簡單(並包含在Raspbian中)。基本上,您將創建一個服務目錄,其中包含一個啟動程序的 run shell腳本。然後daemontools將確保您的程序由於任何原因崩潰而啟動和重新啟動。

設置daemontools非常簡單。只需

  apt-get install daemontools daemontools-run  

然後創建包含可執行運行腳本的服務目錄:

 #創建服務目錄mkdir -p / service / my-service#創建運行腳本cat > / service / my-service / run <<EOF#!/ bin / shecho“我是由daemontools執行的示例服務” sleep 1#替換真正調用程序的那兩行是這樣的:#exec /my/program.py --argumentsEOF#使它可執行chmod 755 / service / my-service / run  

查看 / service / my-service / run 並對其進行編輯,以便它啟動您自己的程序,而不是運行 echo 。完成後,將該目錄符號鏈接到 / etc / service 中,以便daemontools自動(重新)啟動該目錄:

  cd / etc / serviceln -s / service / my-服務。 

大約5秒鐘後,您的程序應運行。您可以使用

 #停止/啟動它$ svc -d / service / my-service#啟動它$ svc -u / service / my-service  

還可以登錄到(例如)syslog。因此,程序的輸出不會丟失。我在這裡寫了一篇更完整的博客文章: https://info-beamer.com/blog/running-info-beamer-in-production

Palmeta
2016-04-10 02:10:35 UTC
view on stackexchange narkive permalink
  1. 在Raspian中,單擊菜單,首選項,主菜單編輯器
  2. 單擊“首選項”並檢查LXSession的默認應用程序
  3. 單擊“確定”並關閉主菜單編輯器
  4. 現在單擊“菜單”,然後在“首選項”下單擊LXSession的默認應用程序
  5. LXSession配置打開
  6. 單擊“自動啟動”
  7. 在“手動”下,將自動啟動的應用程序粘貼到Java命令行中
  8. 單擊添加
  9. 關閉LXSession配置應用程序並重新啟動pi

    您的Java應用程序應在重新啟動後運行

  10. ol>
我認為這裡只需要更多細節
對我來說很好!
謝謝@Palmeta!我在自動啟動中有一個程序,但實際上忘記了設置的位置。我到處看。使用您描述的配置工具,我終於可以再次找到它並停用它:D! 100分
user13700
2015-07-08 01:48:05 UTC
view on stackexchange narkive permalink

您可能已經為PI的一些內部管理任務安裝了 cron

man 5 crontab 中搜索 @reboot 代碼>。

Bex
2015-03-02 00:39:48 UTC
view on stackexchange narkive permalink

您可能想研究 service 。您可以創建一個作為系統初始化一部分的初始化腳本,並將其放在適當的運行級別。

運行 man服務

創建初始化腳本的指南: http://www.novell.com/coolsolutions/feature/15380.html

可悲的是,隨著大多數Linux發行版(包括Raspbian)向“ systemd”的衝動,如果OP更新了他們的系統,那麼這個答案將需要更新,以便從sysV`init`接手... 8-(
Ehsan Ansari
2015-07-11 13:06:24 UTC
view on stackexchange narkive permalink

只需遵循此鏈接

假設您在桌面上有test.txt,則示例可能是:

  sudo nano / etc / xdg / lxsession / LXDE-pi / autostart @ leafpad /home/pi/Desktop/test.txt 

,它可以正常工作!



該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 3.0許可。
Loading...