(Ранее: файл модуля Systemd работает только для одного имени экземпляра, а не для другого)
После нахождения решения для вопроса, указанного выше, мой сервер Minecraft сделал то, что предполагалось. Но сегодня, создавая резервную копию вручную (остановив сервер, скопировав его каталог в другое место и перезапустив), что-то сломалось, и я не знаю что.
Это мой системный файл systemd:
[Unit]
Description=Minecraft Server: %i
Requires=network.target local-fs.target
After=network.target local-fs.target
[Service]
WorkingDirectory=/opt/minecraft/servers/%i
User=minecraft
Group=minecraft
Type=forking
RemainAfterExit=yes
EnvironmentFile=/opt/minecraft/servers/%i/ENV
ExecStart=/usr/bin/tmux new -s %i -d '/usr/bin/java -Xms1G -Xmx${MEMORY_ALLOC} -Dminecraft.instancename=%i -jar forge-universal.jar nogui'
ExecStop=/usr/bin/tmux send -t %i 'say SERVER WILL SHUT DOWN IN 10 SECONDS' ENTER
ExecStop=/bin/sleep 10
ExecStop=/usr/bin/tmux send -t %i 'stop' ENTER
[Install]
WantedBy=multi-user.target
(Файл среды, указанный в модульном файле, содержит строку MEMORY_ALLOC=3G
.)
systemctl start minecraft@creative
мгновенно возвращается и буквально ничего не делает. Выполнение tmux ls
от имени пользователя minecraft
выдает бесполезное сообщение no server running on /tmp/tmux-999/default
.
Сервер можно запустить вручную, либо внутри, либо вне сеанса tmux, используя java -Xms1G -Xmx3G -jar forge-universal.jar nogui
без проблем. Это происходит только при запуске в tmux через systemd.
systemctl --failed
отображает это:
0 loaded units listed. Pass --all to see loaded but inactive units, too.
To show all installed unit files use 'systemctl list-unit-files'.
Журнал не содержит никакой информации, как и системный журнал.
Я понятия не имею, что происходит. Из-за возмущения интернетом над tmux-systemd с 2016 года мои результаты в Google в значительной степени бесполезны. Кто-то здесь знает, что я делаю не так?