Я выполняю команду на моем Linux-сервере (Ubuntu). Например:
screen -A -h 1500 -m -dmS test_command_one /home/SKY-users/SKY-001/./script
Есть ли какой-либо путь к PID этого фона, какое имя экрана: test_command_one
?
ps aux | grep test_command_one:
root 6573 8.1 2.4 271688 123804 pts/4 Ss+ Oct19 3:04 /home/SKY-users/SKY-001/./ ...
Я хотел бы вернуть этот PID: 6573
PHP: (легко)
<?php $output = shell_exec('sudo ps aux | grep test_command_one'); $array = explode("\n", $output); echo '<pre>'.print_r($array, true).'</pre>'; ?>
Спасибо за помощь!
Редактировать:
Комбинируя с кодом @WagnerVaz
$mystring = "test_command_one"; exec("ps aux | grep 'screen .* $mystring' | grep -v grep | awk '{ print $2 }' | head -1", $out); print "The PID is: " . $out[0];
Попробуй это:
<?php $mystring = "test_command_one"; exec("ps aux | grep \"${mystring}\" | grep -v grep | awk '{ print $2 }' | head -1", $out); print "The PID is: " . $out[0]; ?>
Отредактировано: В сочетании с оболочкой exec @romaninsh
Вы также можете попробовать следующее:
echo exec('pidof test_command_one');
Это короче;)
Смотрите также: pidof manpage
$pid = shell_exec($cmd . " && echo $!");
Или просто используйте:
$pid = getmypid();