systemd管理服务

systemd管理服务案例

可执行二进制

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
cat > /etc/systemd/system/go-relay.service << 'EOF'
[Unit]
Description=Go Relay Service
After=network.target

[Service]
Type=simple
ExecStart=/root/cc/go-relay-linux-arm64
Restart=always
RestartSec=3
WorkingDirectory=/root/cc
StandardOutput=journal
StandardError=journal

[Install]
WantedBy=multi-user.target
EOF

systemctl daemon-reload
systemctl restart go-relay
systemctl status go-relay

caddy

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
cat > /etc/systemd/system/caddy.service << 'EOF'
[Unit]
Description=Caddy Web Server
Documentation=https://caddyserver.com/docs/
After=network.target

[Service]
Type=notify
User=root
Group=root
ExecStart=/usr/local/bin/caddy run --config /etc/caddy/Caddyfile
ExecReload=/usr/local/bin/caddy reload --config /etc/caddy/Caddyfile
TimeoutStopSec=5s
LimitNOFILE=1048576
PrivateTmp=true
ProtectSystem=full

[Install]
WantedBy=multi-user.target
EOF

python fast api

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
cat > /etc/systemd/system/wiap.service << 'EOF'
[Unit]
Description=Uvicorn ASGI Server
After=network.target

[Service]
Type=simple
ExecStart=/opt/myapp/venv/bin/uvicorn app:app --host 0.0.0.0 --port 8000
Restart=always
RestartSec=3
WorkingDirectory=/opt/myapp
StandardOutput=journal
StandardError=journal

[Install]
WantedBy=multi-user.target
EOF

systemctl daemon-reload
systemctl restart wiap
systemctl status wiap

python flask

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
cat > /etc/systemd/system/wiap.service << 'EOF'
[Unit]
Description=WIAP Python Application
Documentation=https://flask.palletsprojects.com/
After=network.target

[Service]
Type=simple
User=root
Group=root
WorkingDirectory=/root/wiap
ExecStart=/usr/bin/python3 /root/wiap/app.py
ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure
RestartSec=10s
TimeoutStopSec=10s
StandardOutput=append:/root/wiap/app.log
StandardError=append:/root/wiap/app_error.log
LimitNOFILE=1048576
PrivateTmp=true
ProtectSystem=full

[Install]
WantedBy=multi-user.target
EOF
1
2
3
4
5
6
7
8
9
10
11
12
# 重新加载 systemd 配置
sudo systemctl daemon-reload

# 启用开机自启
sudo systemctl enable wiap.service

# 启动服务
sudo systemctl start wiap.service

# 查看状态
sudo systemctl status wiap.service

管理

1
2
3
systemctl daemon-reload
systemctl restart service
systemctl status service

查看实时日志

1
2
sudo journalctl -u wiap.service -f
sudo journalctl -u wiap.service -n 100