При запуске сервера из командной строки в сеансе tmux, созданного вручную, работает (сеанс остается активным), но не при запуске сеанса systemd . * 1006. *
Разница между этими ситуациями на самом деле не связана с systemd. В одном случае вы запускаете сервер из оболочки в сеансе tmux, а когда сервер завершает работу, управление возвращается в оболочку. В другом случае вы запускаете сервер непосредственно в сеансе tmux, и когда он завершается, нет оболочки, к которой можно вернуться, поэтому сеанс tmux также умирает.
tmux имеет возможность поддерживать сеанс после того, как процесс внутри него умирает (ищите remain-on-exit
на странице руководства), но это, вероятно, не то, что вы хотите: вы хотите иметь возможность вернуться к интерактивной оболочке, чтобы перезагрузите сервер, выясните, почему он умер, или выполните, например, задачи по обслуживанию. Так что, вероятно, лучше изменить вашу команду на это:
'LD_LIBRARY_PATH=. /home/mine/minecraftserver/…; exec bash'
То есть сначала запустите сервер, а затем, после его завершения, замените процесс (оболочку, которая tmux неявно порождает для запуска команды, но которая затем завершится) другой интерактивной оболочкой. (О некоторых других способах получения интерактивной оболочки после выхода из команды см., Например, этот вопрос - но обратите внимание, что синтаксис <(echo commands)
, предложенный в верхнем ответе, недоступен в файлах системных модулей. )