我正在尝试设置一个 Terraria 服务器 Debian,但我一直坚持让它与 systemd 很好地配合工作。我从中获取了一个 systemd 脚本这里但当我尝试启动它时,我只得到这个:
$ sudo systemctl start terraria
Job for terraria.service failed because the control process exited with error code.
See "systemctl status terraria.service" and "journalctl -xe" for details.
$ sudo systemctl status terraria
● terraria.service - server daemon for terraria
Loaded: loaded (/etc/systemd/system/terraria.service; disabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Fri 2019-10-25 20:23:27 CEST; 7s ago
Process: 3606 ExecStart=/usr/bin/screen -dmS terraria /bin/bash -c /home/terraria/server/TerrariaServer.bin.x86_64 -config /home/terraria/server/serverconfig.txt (code=exited, status=127)
Main PID: 3342 (code=exited, status=127)
Oct 25 20:23:27 systemd[1]: Starting server daemon for terraria...
Oct 25 20:23:27 systemd[1]: terraria.service: Control process exited, code=exited status=127
Oct 25 20:23:27 systemd[1]: Failed to start server daemon for terraria.
Oct 25 20:23:27 systemd[1]: terraria.service: Unit entered failed state.
Oct 25 20:23:27 systemd[1]: terraria.service: Failed with result 'exit-code'.
有什么办法让我找出实际导致退出代码 127 的原因(即系统找不到哪一部分)?
这是完整的 systemd 脚本:
[Unit]
Description=server daemon for terraria
[Service]
Type=forking
User=terraria
KillMode=none
ExecStart=/usr/bin/screen -dmS terraria /bin/bash -c "/home/terraria/server/TerrariaServer.bin.x86_64 -config /home/terraria/server/serverconfig.txt"
ExecStop=/usr/local/bin/terrariad exit
[Install]
WantedBy=multi-user.target
所有路径实际上都存在,当我尝试手动执行 ExecStart 行时,它会按预期工作(在屏幕环境中启动 Terraria 服务器)。
答案1
看起来这是一个 Systemd bug。通过解决它强制更新系统apt install systemd
。
答案2
尝试更改用户。
当我尝试致电时发现一个错误
terrariad exit
在终端上,进入时要求输入密码
su - terraria -c "$cmd"(line 13)
所以我更改了“terraria.service”和“terrariad”中的用户,并且它有效。在主要用户上运行该服务并不理想,但对我来说只是为了好玩。
我仍在尝试找出如何解决在泰拉瑞亚用户上运行服务的问题。但现在我“按原样”运行。