網(wǎng)站首頁 編程語言 正文
平時(shí)有用到一些機(jī)器人或者帶有ubuntu系統(tǒng)的移動(dòng)設(shè)備,比如NVIDIA TX2,NVIDIA XAVIA, JetsonNANO,秒算,工控機(jī)等等,寫好了程序后,如果想要運(yùn)行,開機(jī)之后還得連接鍵盤鼠標(biāo),顯示器,等程序運(yùn)行之后還需要重新拔掉鍵盤鼠標(biāo)顯示器等等,步驟繁瑣是一部分,還有可能因?yàn)榉磻?yīng)不及時(shí)發(fā)生危險(xiǎn),尤其對(duì)于無人機(jī)等,因此需要配置程序開機(jī)自啟動(dòng)。
一、ubuntu免密開機(jī)
路徑:系統(tǒng)設(shè)置–用戶設(shè)置
二、程序腳本啟動(dòng)
可以創(chuàng)建test.sh文件,將程序所需要運(yùn)行的指令全部加入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:會(huì)打開一個(gè)新的bash終端并執(zhí)行c后面的語句。linux bash是一個(gè)命令處理器,通常運(yùn)行于文本窗口中,并能執(zhí)行用戶直接輸入的命令;Bash還能從文件中讀取命令,這樣的文件稱為腳本。語句用’;;’,隔開,最后的sleep 5表示延遲5秒退出,這樣就可以在新的終端看到運(yùn)行效果,添加這個(gè)延時(shí)是為了方便驗(yàn)證是否啟動(dòng)程序或者節(jié)點(diǎn)
- 如果是ubuntu 18.04以前的系統(tǒng):gnome-terminal -x bash -c;ubuntu18.04以后的系統(tǒng)輸入:gnome-terminal – bash -c
- gnome-terminal --tab:同一終端窗口中打開一個(gè)新選項(xiàng)卡。而是打開一個(gè)新窗口。
三、文件賦予權(quán)限
chmod指令詳細(xì)說明,請(qǐng)參考:【ubuntu】chmod命令
chmod 777 test.sh
四、開機(jī)啟動(dòng)項(xiàng)管理器
gnome-session-properties是ubuntu的開機(jī)啟動(dòng)項(xiàng)管理器。如果之前編寫的sh文件,不需要sudo權(quán)限,即可將sh文件加入gnome-session-properties自啟動(dòng)管理器中即可。
終端輸入:gnome-session-properties
添加執(zhí)行項(xiàng)目。其中command為你編寫的腳本路徑,name和comment可以隨意配置。
五、需要SUDO權(quán)限的腳本開機(jī)自啟動(dòng)
有的時(shí)候,我們的設(shè)備連接外部設(shè)備,需要打開串口,甚至是gpio口,這需要使用到權(quán)限,串口可以通過添加rules來設(shè)置為普通用戶,但是之前在DJIManifold產(chǎn)品上需要程序?qū)PIO口進(jìn)行設(shè)置,這個(gè)時(shí)候就需要用到sudo權(quán)限了,因?yàn)樵谶M(jìn)入sudo權(quán)限需要輸入密碼,這就不好完成開機(jī)自啟動(dòng)。
此時(shí)就需要利用shell腳本自動(dòng)輸入密碼
指令:echo 'password' | sudo -S "./test.sh"
后續(xù)還需要做三步操作:
給文件運(yùn)行權(quán)限
sudo chmod 777 start.sh
設(shè)置腳本自啟動(dòng)
gnome-session-properties
保持gnome-terminal窗口執(zhí)行后不立刻關(guān)閉
在測(cè)試中會(huì)發(fā)現(xiàn),gnome-terminal命令執(zhí)行完會(huì)一閃而過,自行關(guān)閉。需要添加read命令,read命令是等待用戶按下回車后使窗口關(guān)閉。
gnome-terminal -x bash -c "echo \"OK now\"; read"
總結(jié)
原文鏈接:https://blog.csdn.net/zeye5731/article/details/126142233
相關(guān)推薦
- 2022-07-14 Android實(shí)現(xiàn)多點(diǎn)觸摸操作_Android
- 2022-10-30 淺析pytest?鉤子函數(shù)?之初始鉤子和引導(dǎo)鉤子_python
- 2022-07-13 SpringCloud之http客戶端Feign
- 2022-04-12 C#?實(shí)例解釋面向?qū)ο缶幊讨械膯我还δ茉瓌t(示例代碼)_C#教程
- 2022-03-15 在MacOS+Linux+Nginx中發(fā)布和部署Asp.Net?Core_自學(xué)過程
- 2022-09-08 Prometheus和NodeExporter安裝監(jiān)控?cái)?shù)據(jù)說明_其它綜合
- 2022-05-12 Kotlin flatMap 高級(jí)函數(shù) 操作數(shù)組的數(shù)組
- 2022-09-14 C語言指針如何實(shí)現(xiàn)字符串逆序反轉(zhuǎn)_C 語言
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支