Linux開機自動啟動python指令碼程式,或 Jetson nano或Jetson Xavier NX開機自動啟動python指令碼程式
本文已參與「新人創作禮」活動,一起開啟掘金創作之路。
想要做到某個程式在開機的時候自動啟動,就要知道系統中哪些程式或者配置檔案,是每次開機都是要先執行一遍的,我們只需要想辦法把程式執行的命令放到指定的位置,就可以伴隨著開機後自動執行!
1 通過系統介面設定開機自動執行程式
1.1 windows系統設定開機自動執行命令
在windows系統中,可以通過任務計劃程式
,把需要執行的程式命令,或者要執行的應用程式新增到一個任務中,這樣在每次開機或指定的時間就可以執行該程式,具體請參考這篇部落格
1.2 Linux開機設定開機自動執行命令
當然linux上也有視覺化的介面,設定每次開機自動啟動的應用或程式!
1、這是我的Mint系統(Ubuntu系統改造後的系統)中設定介面中的開機自啟動程式
2、然後選擇自定義命令
3、然後把你要執行的命令
或者程式
填寫進入即可(當然你也可以寫成一個bash指令碼
)然後在bash指令碼中定義要執行的程式!
注意:
在
Jetson Nano
或Jetson Xavier NX
中並沒有該設定介面
,其他的嵌入式裝置我也沒有嘗試,如果你裝置也沒有類似的設定介面,那就繼續往下看吧!
2 Linux中設定開機自啟動python指令碼程式
先說明,我要開機執行如下的程式,讓每次程式開機後就自動播放一段影片,我指令碼程式的路徑為:/home/zhihui/test_boot_up.py
python3 test_boot_up.py
注意:
- 下面的所有
linux開機自啟動python程式
的方法,我最終都是在Jetson nano
上測試的!!!
2.1 方法一:在/etc/rc.local
中新增要執行的指令碼命令
1、用vim開啟/etc/rc.local
檔案
sudo vim /etc /rc.local
2、在/etc/rc.local
檔案中新增你要執行的命令
```python
!/bin/sh -e
rc.local
This script is executed at the end of each multiuser runlevel.
Make sure that the script will "exit 0" on success or any other
value on error.
In order to enable or disable this script just change the execution
bits.
By default this script does nothing.
/usr/bin/python3 /home/zhihui/test_boot_up.py & exit 0 ```
注意:
- 自啟動的指令碼命令要放到
exit 0
之前 &
:表示讓命令在後臺執行
,不在命令列顯示,當然你不加&
也是可以的- 我的
/etc
目錄下並沒有rc.local
檔案,而且我嘗試這種方法在Jetson nano上是沒有成功的,大家可以自行嘗試
2.2 方法二:在/etc/profile
中新增要執行的指令碼
2.2.1 在/etc/profile
中新增要執行的指令碼
1、先建立一個指令碼檔案:/home/zhihui/start.sh
vim ~/start.sh
當然,這個檔案你可以放在任意的位置,記住start.sh檔案的路徑即可!
2、在 start.sh
檔案中新增要開機自啟動的指令碼命令
```python
!/bin/bash
sudo python3 /home/zhihui/test_boot_up.py ```
3、給start.sh
檔案加上可執行許可權
sudo chmod +x /home/zhihui/test_boot_up.py
4、把/home/zhihui/start.sh
新增到/etc/profile
檔案的末尾
sudo vim /etc/profile
然後把/home/zhihui/start.sh
新增到配置檔案的末尾
5、重新啟動,看看程式有沒有自動啟動
sudo reboot
注意:
- 我用這種方法可以成功自啟動程式,但是有點小問題,每次開啟後影片是在播放,但是介面不能夠操作
- 還有,這種方法你需要
管理員許可權
2.2.2 知識拓展
1、登入shell之後啟會被執行的配置檔案
登入shell時,linux會按一定規則讀取啟動幾個配置檔案:
```python /ect/profile
$HOME/.bash_profile
$HOME/.bashrc
$HOME/.bash_login
$HOME/.profile ```
其中 /ect/profile
檔案是系統預設
的主啟動檔案
,系統上每個使用者登入時都會執行
;
- 1)命令列登入和ssh登入,shell會按照以下順序,執行第一個被找到的檔案,餘下的會被忽略:
```python $HOME/.bash_profile
$HOME/.bash_login
$HOME/.profile ```
上面沒有 $HOME/.bashrc
,因為該檔案一般通過其他檔案執行。
- 2)
圖形介面登入
,只加載/ect/profile
和$HOME/.profile
,其他的會被忽略。
對於no-login shell
,即圖形介面開啟的shell
,只會讀入$HOME/.bashrc
檔案,不會檢查/etc/.profile
等其他登入shell檔案。
2、開機自動啟動的服務程式
linux隨機啟動的服務程式都在/etc/init.d
這個資料夾裡,裡面的檔案全部都是指令碼檔案:
另外在/etc
這個資料夾裡還有諸如名為rc1.d, rc2.d一直到rc6.d
的資料夾
,這些都是linux不同的runlevel
,我們一般進入的X windows多使用者的執行級別是第5級
,也就是rc5.d
,在這個資料夾下的指令碼檔案
就是執行第5級時要隨機啟動的服務程式
。需要注意的是,在每個rc (1-6).d資料夾下的檔案其實都是/etc/init.d資料夾下的檔案的一個軟連線,也就是說,在 /etc/init.d資料夾下是全部的服務程式,而每個rc(1-6).d只連結它自己啟動需要的相應的服務程式! 還 需要注意的一點是,在rc5.d裡,每個連結的名字都是以S或者K開頭的,S開頭的表示是系統啟動是要隨機啟動的,K開頭的是不隨機啟動的。這 樣,你就可以知道,如果我要哪個服務隨機啟動,就把它名字第一個字母K改成S就可以了,當然,把S改成K後,這個服務就不能隨機啟動了。Ubuntu系統執行級別: 0 系統停機狀態 1 單使用者或系統維護狀態 2~5 多使用者狀態 。
2.3 方法三:新增到桌面自動啟動程式中
1、建立檔案:~/.config/autostart/MyScript.desktop
注意:
如果沒有autosart目錄
就先建立一個目錄
2、然後把要開機執行的命令新增到~/.config/autostart/MyScript.desktop
的Exec
中即可,如下:
```python [Desktop Entry] Encoding=UTF-8 Name=MyScript Comment=MyScript Icon=gnome-info Exec=python3 /home/zhihui/test_boot_up.py Terminal=false Type=Application Categories=
X-GNOME-Autostart-enabled=true X-GNOME-Autostart-Delay=0 ```
3、然後重啟一下,看看是否會自動啟動程式
sudo reboot
- 推薦使用這種方法
- 我使用這種方法可以成功執行程式!
2.3 方法四:使用crontab命令
是用crontab -e
命令,開啟配置檔案,然後在配置檔案中加入要執行的命令:
@reboot python3 /home/zhihui/test_boot_up.py
也可以加上睡眠時間:
@reboot (sleep 30; python3 /home/zhihui/test_boot_up.py)
參考:https://www.jianshu.com/p/06b140e598e3 參考:https://blog.csdn.net/qq_29113041/article/details/78675396 參考:https://www.xz577.com/j/24992.html 參考:https://stackoverflow.com/questions/24518522/run-python-script-at-startup-in-ubuntu 參考:https://raspberrypi.stackexchange.com/questions/4123/running-a-python-script-at-startup
- windows上比較好用的截圖軟體 Gif錄製軟體 看圖軟體,建議收藏!
- python使用pyinstaller把程式進行打包
- 深度學習視覺化工具visdom使用
- linux後臺執行命令screen的使用
- NVIDIA Jetson Xavier NX上匯入tensorflow報錯:AttributeError: module ‘wrapt‘ has no att
- 在NVIDIA Jetson Xavier NX上把yolov4-deepsort的模型pb模型轉換為tensorrt模型
- 在NVIDIA Jetson Xavier NX上安裝llvm和numba,以及在Jetxon NX上跑通CenterTrack的目標跟蹤模型
- TensorRT7.0版本在Linux環境安裝,以及安裝python API介面,測試TensorRT中的測試用例
- Jetson nano刷好機之後需要做的準備工作
- 本地直播平臺的搭建—四種方式
- python opencv用電腦呼叫手機攝像頭或其他網路攝像頭
- Linux中gcc的編譯、靜態庫和動態庫的製作
- Linux開機自動啟動python指令碼程式,或 Jetson nano或Jetson Xavier NX開機自動啟動python指令碼程式
- lidar鐳射雷達介紹,以及使用鐳射雷達資料通過深度學習做目標檢測
- Camelot:從pdf中提取表格資料
- python中的h5py開源庫的使用
- python3建立定時任務