На моем сервере Debian работают два сервера Minecraft. Чтобы избежать всей напряженной работы по ручной координации нескольких сеансов tmux, я написал системный файл systemd, чтобы сделать все это для меня:
[Unit]
Description=Minecraft Server: %i
After=network.target
[Service]
WorkingDirectory=/opt/minecraft/servers/%i
User=minecraft
Group=minecraft
Type=forking
RemainAfterExit=yes
#Restart=on-abnormal
ExecStart=/usr/bin/tmux new -s mc-%i -d '/usr/bin/java -Xms1G -Xmx4G -jar forge-universal.jar nogui'
ExecStop=/usr/bin/tmux send -t mc-%i 'say SERVER WILL SHUT DOWN IN 10 SECONDS' ENTER
ExecStop=/bin/sleep 10
ExecStop=/usr/bin/tmux send -t mc-%i 'stop' ENTER
[Install]
WantedBy=multi-user.target
В /opt/minecraft/servers/
есть два подкаталога: private
и otherserver
. Списки файлов этих каталогов выглядят так:
minecraft@server ~ # ls -la /opt/minecraft/servers/private/
total 39180
drwxr-xr-x 9 minecraft minecraft 4096 Dec 20 21:34 .
drwxr-xr-x 5 minecraft minecraft 4096 Dec 19 21:11 ..
-rw-r--r-- 1 minecraft minecraft 2 Dec 20 21:33 banned-ips.json
-rw-r--r-- 1 minecraft minecraft 2 Dec 20 21:33 banned-players.json
drwxr-xr-x 10 minecraft minecraft 4096 Oct 11 16:22 config
drwxr-xr-x 2 minecraft minecraft 4096 Oct 11 16:11 crash-reports
-rw-r--r-- 1 minecraft minecraft 181 Oct 11 16:11 eula.txt
-rw-r--r-- 1 minecraft minecraft 4888981 Oct 11 16:10 forge-1.12.2-14.23.5.2768-universal.jar
lrwxrwxrwx 1 minecraft minecraft 39 Oct 11 11:41 forge-universal.jar -> forge-1.12.2-14.23.5.2768-universal.jar
drwxr-xr-x 3 minecraft minecraft 4096 Apr 14 2018 journeymap
drwxr-xr-x 8 minecraft minecraft 4096 Apr 14 2018 libraries
drwxr-xr-x 2 minecraft minecraft 4096 Dec 20 21:32 logs
-rw-r--r-- 1 minecraft minecraft 369 Oct 11 15:04 mapcrafter.conf
-rw-r--r-- 1 minecraft minecraft 30222121 Oct 11 16:10 minecraft_server.1.12.2.jar
drwxr-xr-x 3 minecraft minecraft 4096 Oct 11 16:21 mods
-rw-r--r-- 1 minecraft minecraft 271 Dec 20 21:33 ops.json
-rw-r--r-- 1 minecraft minecraft 843 Dec 20 21:33 server.properties
-rw-r--r-- 1 minecraft minecraft 322 Dec 20 21:32 usercache.json
-rw-r--r-- 1 minecraft minecraft 112 Oct 13 23:18 usernamecache.json
-rw-r--r-- 1 minecraft minecraft 171 Dec 18 22:07 whitelist.json
drwxr-xr-x 11 minecraft minecraft 4096 Dec 20 21:33 world
Выполнение systemctl start minecraft@otherserver
приводит к новому сеансу tmux для пользователя minecraft
под названием mc-otherserver
и успешно запущенному серверу Minecraft.
С другой стороны, выполнение systemctl start minecraft@private
практически ничего не делает. Команда мгновенно возвращается, не порождает новый сеанс tmux, не запускает новый сервер Minecraft, ничего. Я проверил, не падает ли экземпляр Minecraft, но это не так. Выполнение вручную tmux new -s mc-private -d 'java -Xms1G -Xmx4G -jar forge-universal.jar nogui
в каталоге сервера работает без сбоев и запускает сервер Minecraft в новом экземпляре tmux, как и предполагалось.
Любопытно, что оба сервера работали всего несколько дней назад. Я проверил журналы изменений для systemd и tmux, но, насколько я могу судить, они не обновлялись до стабильной версии Debian уже несколько недель.
Кроме того, journalctl
содержит никакой информации о моем сбойном модульном файле, поэтому я в недоумении. Кто-нибудь знает, что может быть причиной этого?