Search code examples
phplinuxprocessdebianopen-source

PHP - Verify if a program is running


I assembled and configured a mini server at home running Debian GNU/Linux with Apache. I also installed the open source video game Teeworlds in order to run a dedicated server.

My idea is to display some information regarding the status of the server on my website, using Apache and PHP. The most important feature is to display if the server is running or not.

I tried using the pgrep command at first that works fine with many processes but not in my case:

<?php exec("pgrep process_name", $output, $return);
  if ($return == 0) {
    /*Service is running*/
  }
  else{
    /*Service is not running*/
  }
?>

Next I found out that this works in the terminal:

ps -ef | awk '$8=="/usr/games/teeworlds-server" {print $2}'

but I can't use it with the PHP exec command because this string uses double quotes (it doesn't work this single quotes).

Is there any other way to check the status of a process using PHP? Or am I doing something wrong?

Note: The game has been installed from the official Debian repositories.


Solution

  • I solved this problem by changing the exec command:

    exec("ps -ef | awk '$8==\"/usr/games/teeworlds-server\" {print $2}'", $output, $return)

    with shell_exec:

     $test= shell_exec("ps -ef | awk '$8==\"/usr/games/teeworlds-server\" {print $2}'");
     if ($test>0) {
       /*Server is running*/
     }
     else{
       /*Server is not running*/
     }