Systemd
systemd.service | service文件 systemd.exec 环境变量
man systemctl man systemd.service
Note
通常位于/etc/systemd/system/目录下
命令示例
| 命令 | 说明 |
|---|---|
systemctl cat sshd |
查看服务内容 |
systemctl list-units --type=service |
配置
日志
Note
不配置StandardOutput 和 StandardError 所有 print() 或程序输出都默认发送到 systemd journal
StandardOutput=file:/var/log/cs.log
StandardError=file:/var/log/cs.log
Type
-
simple:服务进程 不 fork,前台运行
-
forking:服务进程 会 fork,父进程退出,子进程在后台运行
案例
frpc
[Unit]
Description=FRP Client
After=network.target
[Service]
Type=simple
ExecStart=/root/soft/frp_0.61.2_linux_amd64/frpc -c /root/soft/frp_0.61.2_linux_amd64/frpc.toml
ExecStop=/bin/kill -TERM $MAINPID
Restart=on-failure
RestartSec=5
User=root
Group=root
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target
uvicorn
[Unit]
Description=uvicorn
After=network.target
[Service]
Type=simple
User=root
Group=root
ExecStart=xx/.venv/bin/uvicorn main:app --host 0.0.0.0 --port 8000
Restart=always
RestartSec=5
Environment=PYTHONUNBUFFERED=1
[Install]
WantedBy=multi-user.target
JupyterLab
[Unit]
Description=JupyterLab
After=network.target
[Service]
Type=simple
User=jupyter
Group=jupyter
WorkingDirectory=/home/jupyter
ExecStart=/usr/bin/jupyter-lab \
--ip=0.0.0.0 \
--port=8888 \
--no-browser
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
Nacos
[Unit]
Description=Nacos Server
After=network.target
[Service]
Type=forking
ExecStart=/opt/nacos/bin/startup.sh
ExecStop=/opt/nacos/bin/shutdown.sh
User=root
Group=root
Restart=on-failure
RestartSec=10
[Install]
WantedBy=multi-user.target