ubuntu開機后ROS程序自啟動問題
平時有用到一些機器人或者帶有ubuntu系統(tǒng)的移動設(shè)備,比如NVIDIA TX2,NVIDIA XAVIA, JetsonNANO,秒算,工控機等等,寫好了程序后,如果想要運行,開機之后還得連接鍵盤鼠標,顯示器,等程序運行之后還需要重新拔掉鍵盤鼠標顯示器等等,步驟繁瑣是一部分,還有可能因為反應不及時發(fā)生危險,尤其對于無人機等,因此需要配置程序開機自啟動。
一、ubuntu免密開機
路徑:系統(tǒng)設(shè)置–用戶設(shè)置

二、程序腳本啟動
可以創(chuàng)建test.sh文件,將程序所需要運行的指令全部加入sh文件中。
例如:
#! /bin/bash gnome-terminal -- bash -c "cd /home/xxx/Desktop/CSDN/test_demo/build;mkdir helloworld" & sleep 5 wait exit 0
說明:
- gnome-terminal --bash -c:會打開一個新的bash終端并執(zhí)行c后面的語句。linux bash是一個命令處理器,通常運行于文本窗口中,并能執(zhí)行用戶直接輸入的命令;Bash還能從文件中讀取命令,這樣的文件稱為腳本。語句用’;;’,隔開,最后的sleep 5表示延遲5秒退出,這樣就可以在新的終端看到運行效果,添加這個延時是為了方便驗證是否啟動程序或者節(jié)點
- 如果是ubuntu 18.04以前的系統(tǒng):gnome-terminal -x bash -c;ubuntu18.04以后的系統(tǒng)輸入:gnome-terminal – bash -c
- gnome-terminal --tab:同一終端窗口中打開一個新選項卡。而是打開一個新窗口。
三、文件賦予權(quán)限
chmod指令詳細說明,請參考:【ubuntu】chmod命令
chmod 777 test.sh
四、開機啟動項管理器
gnome-session-properties是ubuntu的開機啟動項管理器。如果之前編寫的sh文件,不需要sudo權(quán)限,即可將sh文件加入gnome-session-properties自啟動管理器中即可。
終端輸入:gnome-session-properties

添加執(zhí)行項目。其中command為你編寫的腳本路徑,name和comment可以隨意配置。

五、需要SUDO權(quán)限的腳本開機自啟動
有的時候,我們的設(shè)備連接外部設(shè)備,需要打開串口,甚至是gpio口,這需要使用到權(quán)限,串口可以通過添加rules來設(shè)置為普通用戶,但是之前在DJIManifold產(chǎn)品上需要程序?qū)PIO口進行設(shè)置,這個時候就需要用到sudo權(quán)限了,因為在進入sudo權(quán)限需要輸入密碼,這就不好完成開機自啟動。
此時就需要利用shell腳本自動輸入密碼
指令:echo 'password' | sudo -S "./test.sh"
后續(xù)還需要做三步操作:
給文件運行權(quán)限
sudo chmod 777 start.sh
設(shè)置腳本自啟動
gnome-session-properties
保持gnome-terminal窗口執(zhí)行后不立刻關(guān)閉
在測試中會發(fā)現(xiàn),gnome-terminal命令執(zhí)行完會一閃而過,自行關(guān)閉。需要添加read命令,read命令是等待用戶按下回車后使窗口關(guān)閉。
gnome-terminal -x bash -c "echo \"OK now\"; read"
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
PHP程序員玩轉(zhuǎn)Linux系列 使用supervisor實現(xiàn)守護進程
這篇文章主要為大家詳細介紹了PHP程序員玩轉(zhuǎn)Linux系列文章,使用supervisor實現(xiàn)守護進程,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-04-04
linux kernel 打印函數(shù)指針對應的函數(shù)名方法
下面小編就為大家?guī)硪黄猯inux kernel 打印函數(shù)指針對應的函數(shù)名方法。小編覺得挺不錯的?,F(xiàn)在就分享給大家。也給大家做個參考。一起跟隨小編過來看看吧2016-12-12
在 Linux 命令行中使用 tcpdump 抓包的一些功能
tcpdump 是一款靈活、功能強大的抓包工具,能有效地幫助排查網(wǎng)絡(luò)故障問題。接下來通過本文給大家介紹在 Linux 命令行中使用 tcpdump 抓包的一些常用功能,需要的朋友參考下吧2018-11-11
linux上安裝zookeeper 啟動和關(guān)閉的教程
這篇文章主要介紹了linux上安裝zookeeper 啟動和關(guān)閉的教程詳解,首先zookeeper運行需要java環(huán)境所以必須先裝JDK,具體操作步驟大家一起看看本文吧2018-08-08

