# Linux 建立自訂 Systemd
```
[Unit]
# 服務名稱
Description=Your Server
# 服務相關文件
# Documentation=https://example.com
# Documentation=man:nginx(8)
# 設定服務啟動的先後相依姓,例如在網路啟動之後:
# After=network.target
[Service]
# 行程類型
Type=simple
# 啟動服務指令
ExecStart=/opt/your_command
# 服務行程 PID(通常配合 forking 的服務使用)
# PIDFile=/run/your_server.pid
# 啟動服務前,執行的指令
# ExecStartPre=/opt/your_command
# 啟動服務後,執行的指令
# ExecStartPost=/opt/your_command
# 停止服務指令
# ExecStop=/opt/your_command
# 停止服務後,執行的指令
# ExecStopPost=/opt/your_command
# 重新載入服務指令
# ExecReload=/opt/your_command
# 服務終止時自動重新啟動
Restart=always
# 重新啟動時間格時間(預設為 100ms)
# RestartSec=3s
# 啟動服務逾時秒數
# TimeoutStartSec=3s
# 停止服務逾時秒數
# TimeoutStopSec=3s
# 執行時的工作目錄
# WorkingDirectory=/opt/your_folder
# 執行服務的使用者(名稱或 ID 皆可)
# User=myuser
# 執行服務的群組(名稱或 ID 皆可)
# User=mygroup
# 環境變數設定
# Environment="VAR1=word1 word2" VAR2=word3 "VAR3=$word 5 6"
# 服務輸出訊息導向設定
# StandardOutput=syslog
# 服務錯誤訊息導向設定
# StandardError=syslog
# 設定服務在 Syslog 中的名稱
# SyslogIdentifier=your-server
[Install]
WantedBy=multi-user.target
```
## 範例
* 建立簡單自動抓取時間服務
```
$ cat date.sh
#!/bin/bash
while true
do
date >> /tmp/date
sleep 1.5
done
$ chmod +x date.sh
$ pwd
/home/rancher
$ sudo nano /etc/systemd/system/date_server.service
[Unit]
Description=date log Server
[Service]
Type=simple
ExecStart=/home/rancher/date.sh
Restart=always
[Install]
WantedBy=multi-user.target
```
* 啟動服務
```
$ sudo systemctl daemon-reload
$ sudo systemctl start date_server.service
$ sudo systemctl status date_server.service
$ sudo systemctl enable date_server.service
$ cat /tmp/date
```
## 參考連結
https://blog.gtwang.org/linux/linux-create-systemd-service-unit-for-python-echo-server-tutorial-examples/
###### tags: `linux`