У меня есть работающий сервер Minecraft, следуя этому руководству: https://linuxconfig.org/how-to-setup-minecraft-server-on-ubuntu-18-04-bionic-beaver-linux
В конце он показывает, как настроить службу (поэтому он будет запускаться автоматически, если сервер перезагружается), и я вижу, что могу проверить состояние следующим образом:
sudo systemctl start minecraft@survival
Это печатает что-то вроде следующего:
minecraft@survival.service - Minecraft Server: survival
Loaded: loaded (/etc/systemd/system/minecraft@.service; indirect; vendor pres
Active: active (running) since Tue 2019-03-05 20:17:17 UTC; 4h 32min ago
Main PID: 1031 (screen)
Tasks: 27 (limit: 4537)
CGroup: /system.slice/system-minecraft.slice/minecraft@survival.service
├─1031 /usr/bin/SCREEN -DmS mc-survival java -Xmx2G -jar server.jar n
└─1051 java -Xmx2G -jar server.jar nogui
Мой вопрос: как мне распечатать статус сервиса Minecraft (активный / неактивный) из файла PHP (для использования при печати на веб-странице). У меня есть пара идей - следующим образом - но я надеюсь, что кто-то может поделиться решением с деталями:
Идея 1.) используйте shell_exec()
в PHP для выполнения идентичной команды, как я включил выше, и сохраняйте вывод в переменной, которую я могу очистить (то есть используйте regex, чтобы найти слово «active»). Этот подход кажется плохой идеей по соображениям безопасности - но я не уверен в этом - но, безусловно, выявляет некоторые проблемы с производительностью сервера.
Идея 2.) создать задание cron
, которое сначала печатает вышеприведенный вывод в статический файл (скажем, каждые 5 минут), а затем использует php для чтения из txt-файла. Это решает вышеупомянутую проблему производительности, и я должен иметь возможность читать из файла кэша ОК - я просто не уверен, является ли это хорошим решением И как я мог бы вывести многословие - начиная с sudo systemctl start minecraft@survival
- в файл.
Чем больше я использую Linux [Ubuntu 18.04 в настоящее время], тем больше я понимаю, насколько я новичок! Поэтому, как я уже сказал, я ценю любые особенности / детали вашего решения. Заранее спасибо!