У меня есть скрипт 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;
}
}
это получается простоимя процесса, ничего другого (без идентификатора, без точек, без пробелов и без (отдельных) областей)