Я собрал и настроил мини-сервер дома, на котором запущен Debian GNU/Linux с Apache. Я также установил видеоигр с открытым исходным кодом Teeworlds, чтобы запустить выделенный сервер.PHP - Проверьте, запущена ли программа
Моя идея - показать некоторую информацию о статусе сервера на моем веб-сайте, используя Apache и PHP. Наиболее важная функция - показать, работает ли сервер или нет.
Я попытался с помощью pgrep команды на первом, что отлично работает со многими процессами, но не в моем случае:
<?php exec("pgrep process_name", $output, $return);
if ($return == 0) {
/*Service is running*/
}
else{
/*Service is not running*/
}
?>
Далее я узнал, что это работает в терминале:
ps -ef | awk '$8=="/usr/games/teeworlds-server" {print $2}'
, но я не могу использовать его с командой PHP exec, потому что эта строка использует двойные кавычки (это не работает с этими одиночными кавычками).
Есть ли другой способ проверить статус процесса с помощью PHP? Или я делаю что-то неправильно?
Примечание: Игра была установлена из официальных репозиториев Debian.
Почему вы не можете избежать двойных кавычек в аргументе exec? –
@JamesHunt Я действительно забыл об этой возможности! Мне так глупо! Я попробую. –
@JamesHunt побег для работы с двойными кавычками: я напечатал команду в виде строки, и результат правильный. Но оба значения $ output и $ return всегда одинаковы независимо от фактического состояния процесса. –