Claws Garden

Systemd服务模板

这里总结了一些常用的systemd service模板,以供后来参考。

1 裸服务

直接使用systemd运行一些小型的服务,不需要收集日志、不需要经常查看具体的运行状态的时候使用。特点是快捷方便,没有副作用。

 1[Unit]
 2Description=Server Status Client Service
 3After=network.target
 4
 5[Service]
 6Type=simple
 7User=root
 8Restart=on-failure
 9RestartSec=5s
10ExecStart=/usr/bin/python3 $PWD/client-linux.py SERVER=server.claws.top USER=s07 >/dev/null 2>&1
11
12[Install]
13WantedBy=multi-user.target

只需要将ExecStart处换成自己的命令就可以了。如果是不需要什么权限的操作,也可将User改成nobody会比较安全。

2 screen 服务

在后台创建一个screen,可以方便地监控服务运行的状态。

 1[Unit]
 2Description=Minecraft Server
 3After=network.target
 4
 5[Service]
 6WorkingDirectory=/home/claws/app/mc
 7User=claws
 8KillMode=none
 9Type=forking
10ExecStart=/usr/bin/screen -dmS mc ./run.sh
11ExecReload=/usr/bin/screen -dr mc -X eval 'stuff "reload"\\015'
12ExecStop=/usr/bin/screen -dr mc -X eval 'stuff "say SERVER SHUTTING DOWN. Saving map..."\\015'
13ExecStop=/usr/bin/screen -dr mc -X eval 'stuff "save-all"\\015'
14ExecStop=/usr/bin/screen -dr mc -X eval 'stuff "stop"\\015'
15ExecStop=/usr/bin/sleep 10s
16Restart=on-failure
17
18[Install]
19WantedBy=multi-user.target

ExecStop可以分为多个步骤,例如这里的MC服务器的例子,就把结束的服务分为好几个阶段,先对玩家发出警告,然后再关闭服务器。

#Linux #运维 #服务