Systemd запускает ExecStart и ExecStop одновременно

Я пытаюсь запустить сервер minecraft с помощью systemd, но он не работает. Вот простой тестовый файл с просто заменяемыми битами «execstart» и «execstop».

root@Paidia:~# systemctl start test@one root@Paidia:~# systemctl status test@one ● test@one.service - Test one Loaded: loaded (/etc/systemd/system/test@.service; disabled; vendor preset: enabled) Active: inactive (dead) Oct 31 23:03:21 Paidia echo[398]: I started Oct 31 23:03:21 Paidia echo[399]: I stopped Oct 31 23:03:21 Paidia systemd[1]: Started Test one. root@Paidia:~# cat /etc/systemd/system/test\@.service [Unit] Description=Test %i [Service] Type=forking ExecStart=/bin/echo "I started" ExecStop=/bin/echo "I stopped" [Install] WantedBy=multi-user.target

Редактировать с помощью реального кода

root@Paidia:~# cat /etc/systemd/system/minecraft\@.service [Unit] Description=Minecraft Server %i [Service] WorkingDirectory=/opt/minecraft-%i User=minecraft Type=forking ExecStart=/usr/bin/screen -DmS mc-%i /bin/java -Xmx2048M -jar minecraft_server.jar nogui ExecStop=/usr/bin/screen -p 0 -S mc-%i -X eval 'stuff "say SERVER SHUTTING DOWN. Saving map..."\\015' ExecStop=/usr/bin/screen -p 0 -S mc-%i -X eval 'stuff "save-all"\\015' ExecStop=/usr/bin/screen -p 0 -S mc-%i -X eval 'stuff "stop"\\015' ExecStop=/bin/sleep 2 [Install] WantedBy=multi-user.target root@Paidia:~# systemctl start minecraft@survival Job for minecraft@survival.service failed because the control process exited with error code. See "systemctl status minecraft@survival.service" and "journalctl -xe" for details. root@Paidia:~# systemctl status minecraft@survival ● minecraft@survival.service - Minecraft Server survival Loaded: loaded (/etc/systemd/system/minecraft@.service; disabled; vendor preset: enabled) Active: failed (Result: exit-code) since Wed 2017-11-01 01:32:44 UTC; 8s ago Process: 422 ExecStop=/usr/bin/screen -p 0 -S mc-%i -X eval stuff "say SERVER SHUTTING DOWN. Saving map..."\015 (code=exited, status=1/FAILURE) Process: 420 ExecStart=/usr/bin/screen -DmS mc-%i /bin/java -Xmx2048M -jar minecraft_server.jar nogui (code=exited, status=0/SUCCESS) Nov 01 01:32:43 Paidia systemd[1]: Starting Minecraft Server survival... Nov 01 01:32:44 Paidia systemd[1]: minecraft@survival.service: Control process exited, code=exited status=1 Nov 01 01:32:44 Paidia systemd[1]: Failed to start Minecraft Server survival. Nov 01 01:32:44 Paidia systemd[1]: minecraft@survival.service: Unit entered failed state. Nov 01 01:32:44 Paidia systemd[1]: minecraft@survival.service: Failed with result 'exit-code'. root@Paidia:~# journalctl -u minecraft@survival -- Logs begin at Wed 2017-11-01 01:32:10 UTC, end at Wed 2017-11-01 01:32:44 UTC. -- Nov 01 01:32:43 Paidia systemd[1]: Starting Minecraft Server survival... Nov 01 01:32:44 Paidia systemd[1]: minecraft@survival.service: Control process exited, code=exited status=1 Nov 01 01:32:44 Paidia systemd[1]: Failed to start Minecraft Server survival. Nov 01 01:32:44 Paidia systemd[1]: minecraft@survival.service: Unit entered failed state. Nov 01 01:32:44 Paidia systemd[1]: minecraft@survival.service: Failed with result 'exit-code'.

Как вы можете видеть, он пытается одновременно выполнить «ExecStart» и «ExecStop».

1
задан 1 November 2017 в 05:34

3 ответа

«Процесс управления завершен, код = выведенный статус = 1» указывает, что основной процесс запускается службой, выходящей со статусом 1, без каких-либо выживших разветвленных процессов. Поскольку вы использовали screen -Dm, это означает, что screen вышел, когда команда, с которой ему было предложено запустить завершение. Используйте -dm, чтобы сохранить screen живым, а затем снова подключите его, чтобы посмотреть, что произошло.

0
ответ дан 22 May 2018 в 16:55

«Процесс управления завершен, код = выведенный статус = 1» указывает, что основной процесс запускается службой, выходящей со статусом 1, без каких-либо выживших разветвленных процессов. Поскольку вы использовали screen -Dm, это означает, что screen вышел, когда команда, с которой ему было предложено запустить завершение. Используйте -dm, чтобы сохранить screen живым, а затем снова подключите его, чтобы посмотреть, что произошло.

0
ответ дан 18 July 2018 в 04:09

«Процесс управления завершен, код = выведенный статус = 1» указывает, что основной процесс запускается службой, выходящей со статусом 1, без каких-либо выживших разветвленных процессов. Поскольку вы использовали screen -Dm, это означает, что screen вышел, когда команда, с которой ему было предложено запустить завершение. Используйте -dm, чтобы сохранить screen живым, а затем снова подключите его, чтобы посмотреть, что произошло.

0
ответ дан 24 July 2018 в 18:01

Другие вопросы по тегам:

Похожие вопросы: