Проверьте экран для запуска процесса с PHP - PullRequest
0 голосов
/ 19 сентября 2018

У меня есть скрипт php, который выполняет команды на моем сервере CentOS с именами процессов

screen -dmS $processName ./build.sh

Я хочу иметь возможность проверить, запущено ли уже имя этого процесса на экране и выполняется ли оно, выполнитене выполнять скрипт, а вместо этого выводить результат обратно в php, например

$processName = "myProcess";

//Check to see if the process is running using screen -ls and return yes or no back to the php script
if(!($stream = ssh2_exec($con, "screen -ls"))){
"there is a screen on: 11111.myProcess (Detached)" //Returns 'yes' to PHP
"No Sockets Found" //Returns 'no' to PHP

  if($processReturn == "yes"){
  //Do not start the process
    echo "a process is already running in that name";
  } else {
    //start the process with the name myProcess
    if(!($stream = ssh2_exec($con, "screen -dmS ".$processName." ./build.sh")));
  }

ОБНОВЛЕНИЕ: Решил проблему сам, для тех, кому это может понадобиться.

if(!empty($prCheck))
    {
        $proc = $_GET['prCheck'];
        $stream = ssh2_exec($con, "screen -ls | grep ".$proc);
        stream_set_blocking($stream, true);
        $stream_out = ssh2_fetch_stream($stream, SSH2_STREAM_STDIO);
        $output = stream_get_contents($stream_out);
        $sep = explode('.', $output);
        $result = explode(" (",$sep[1]);
        $fin = $result[0];
        if($fin == $proc){
            echo $fin;
        }
    }

это получается простоимя процесса, ничего другого (без идентификатора, без точек, без пробелов и без (отдельных) областей)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...