Systemd 服务在指定用户帐户下启动时运行脚本

Systemd 服务在指定用户帐户下启动时运行脚本

我对 systemd 还很陌生,我正在尝试为 Teamspeak 服务器设置一个小型启动脚本,但在实际启动它时遇到了一些麻烦。

一些信息:

  • Teamspeak 服务器在其自己的用户帐户下运行,名为ts3
  • 服务器文件位于/home/teamspeak3-server/
  • 该目录内有一个 shell 脚本,允许您启动/停止/重新启动服务器(该脚本与软件捆绑在一起)。例如ts3server_startscript.sh start

我在 中创建了一项新服务/lib/systemd/system,其内容如下:

[Unit]
Description=TeamSpeak 3 Server Startup Service
After=network.target

[Service]
Type=simple
User=ts3
ExecStart=/bin/bash /home/ts3/teamspeak3-server/ts3server_startscript.sh start

[Install]
WantedBy=multi-user.target

当我启动它时:

$ systemctl start teamspeak3
==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ===
Authentication is required to manage system services or units.
Authenticating as: bob,,, (bob)
Password:
==== AUTHENTICATION COMPLETE ===

似乎成功了,但服务器没有启动。我尝试过重新启动,以防它因为After=network.target……而无法启动,但它仍然不想启动。

知道我在这里遗漏了什么吗?

编辑:它可以工作了,但是忘记了如何...在这里添加我的 Systemd 脚本:

[Unit]
Description=TeamSpeak 3 Server Startup Service
Wants=network-online.target
After=network.target network-online.target

[Service]
Type=forking
User=ts3
ExecStart=/bin/sh /home/ts3/teamspeak3-server/ts3server_startscript.sh start
PIDFile=/home/ts3/teamspeak3-server/ts3server.pid

[Install]
WantedBy=multi-user.target

相关内容