簡介 :

systemd 基於一個事件驅動的機制,它可以同時啟動並管理多個服務,並在服務失敗或系統崩潰時自動重啟服務。它還提供了各種管理命令和工具,用於管理系統日誌、網絡配置、作業系統時間等等…。

首先,移動到系統單位檔案的存放位置 :

1
cd /etc/systemd/system   # 我是用 ubuntu 22.04 版本,如果你路徑不一樣請自己找

建立系統單位檔案 :

1
touch <your service name>.service

打開你建立的檔案並寫入設定 :

1
2
3
4
5
6
7
8
9
10
11
12
13
[Unit]
Description=<write your description>

[Service]
# 讓 systemd 知道編譯器和啟動檔案在哪,以及啟動方式,一般來說你怎麼啟動的就直接貼過來,不過他不吃你的 $PATH 所以要給完整路徑
ExecStart=/usr/bin/python3 -u /home/ubuntu/projects/DiscordBot/main.py
WorkingDirectory=/home/ubuntu/projects/DiscordBot/
User=ubuntu # 要記得確保有權限讀取和執行 WorkingDirectory 底下所有檔案
Group=ubuntu # 要記得確保有權限讀取和執行 WorkingDirectory 底下所有檔案
Restart=on-failure

[Install]
WantedBy=multi-user.target

開始執行 :

1
sudo systemctl start <your service name>.service

查看服務狀態 :

1
sudo systemctl status <your service name>.service

當你有變更你的 .service 內容時,需要先 reload :

1
sudo systemctl daemon-reload

其他語法 :

  • 設定為啟動系統時就自動啟動 :
1
sudo systemctl enable <your service name>.service
  • 停止服務 :
1
sudo systemctl stop <your service name>.service
  • 重啟服務 :
1
sudo systemctl restart <your service name>.service
  • 查看錯誤日誌 :
1
journalctl -u <your service name>.service