# Ubuntu開機自動啟動虛擬環境及程式
VM或Server有時會因不明原因自行關閉並重啟,藉由設定自動運行腳本,以便重啟後能自動開啟所需程式。以下採用`Ubuntu`做說明,該處不推薦`Windows`,因重啟後會停在使用者登入畫面,即便已設定自動進入桌面,還是需要等到使用者連線進VM後才能讓系統進入桌面。
---
## 建立運行腳本sh
#### Step 1. 建立腳本文件
```
sudo vi ~/project_directory/example.sh
```
寫入內容(激活虛擬環境並啟動程式,以anacona3為例)
```
source anaconda3資料夾路徑/etc/profile.d/conda.sh
conda activate 虛擬環境名稱
cd ~/project_directory
python xxx.py
```
修改權限
```
sudo chmod 755 ~/project_directory/example.sh
```
---
## systemctl啟用rc.local服務
Ubuntu較新版本可能沒有`/etc/rc.local`,如有可直接啟用服務,否則需手動創建
### 手動創建
#### Step 1. 建立systemd服務
```
sudo vi /etc/systemd/system/rc-local.service
```
寫入內容(相關設定)
```
[Unit]
Description=/etc/rc.local Compatibility
ConditionPathExists=/etc/rc.local
[Service]
Type=forking
ExecStart=/etc/rc.local start
TimeoutSec=0
StandardOutput=tty
RemainAfterExit=yes
SysVStartPriority=99
[Install]
WantedBy=multi-user.target
```
#### Step 2. 建立rc.local文件
```
sudo vi /etc/rc.local
```
寫入內容(自動運行腳本路徑)
```
#!/bin/bash
~/project_directory/example.sh
```
修改權限
```
sudo chmod 755 /etc/rc.local
```
#### Step 3. 啟用服務
```
sudo systemctl enable rc-local
```
#### Step 4. 重新開機並確認是否正確啟動
```
sudo systemctl status rc-local
```
---
## Reference
https://marsown.com/wordpress/how-to-enable-etc-rc-local-with-systemd-on-ubuntu-20-04/
---
###### tags: `rc-local` `anaconda3`