所以我遇到了在设置我的 teampeak 服务器时遇到的问题(正确!)。Teamspeak Server 及其配置完全没问题。当我希望它在系统启动时启动时,我的问题就开始了。\n现在介绍如何创建自动启动脚本等。我已经完成了,并且它在过去一直有效。但这次我只想使用 systemd 服务来完成此操作,因为 teampeak 已经提供了一个 startscript。
\n\n因此,在给出一些背景信息后,让我们开始解决问题:\n通过我现在正在使用的服务配置(见下文),teamspeak 服务器在系统启动时完美启动。但是,当我使用用户“teamspeak”登录执行一些操作然后输入 exit 时,teamspeak 服务器将关闭并随后重新启动。
\n\n[Unit]\nDescription=TeamSpeak 3 Server\n\n[Service]\nExecStart=/teamspeak/ts3server_startscript.sh start\nExecStop=/teamspeak/ts3server_startscript.sh stop\nPIDFile=/teamspeak/ts3server.pid\nRestart=always\nStandardOutput=syslog\nStandardError=syslog\nSyslogIdentifier=teamspeak_server\nUser=teamspeak\nGroup=teamspeak\nType=Forking\n[Install]\nWantedBy=multi-user.target\nRun Code Online (Sandbox Code Playgroud)\n\n因此,重新启动来自“Restart=always”,我百分百确定,teamspeak-shutdown 来自该服务。我已经尝试过“RemainAfterExit = true”,但唯一做的事情是,在用户注销后不会重新启动teamspeak服务器(因为它让它认为服务仍然处于活动状态,但进程全部关闭。至少这就是我理解该服务正在运行以及为什么它停止我的 teampeak 服务器的方式。
\n\n简而言之:当teamspeak用户退出其会话时,如何防止服务调用ExecStop命令(在我的例子中是putty,ssh连接)
\n\n这是所有 systemd.service 选项的一个很好的总结:点击我
\n\n尽管它与我上面写的内容相反,但我也编写了一个脚本,将 ts3server_minimal_startscript.sh 包装到屏幕会话中。该脚本在手动使用时工作得非常好,但通过服务使用它时我仍然遇到完全相同的问题。正如我所说,我更喜欢非屏幕版本,因为 ts3server_startscript.sh 已经为 ts-server 创建了自己的进程。
\n\n编辑:\n我忘了说,我在 /etc/systemd/system/teamspeak.service 创建了该服务。\n根据请求,这是我退出 teampeak 用户之前的 systemctl 状态答案:
\n\n\xe2\x97\x8f teamspeak.service - TeamSpeak 3 Server\n Loaded: loaded (/etc/systemd/system/teamspeak.service; enabled; vendor \npreset\n: enabled)\n Active: active (running) since Sat 2018-04-14 17:35:08 CEST; 23h a\ngo\n Process: 3344 ExecStop=/teamspeak/ts3server_startscript.sh stop …Run Code Online (Sandbox Code Playgroud)