2015-09-16 4 views
0

я могу запустить PHP скрипт, который находится в Linux сервере следующим образом:Выполнить скрипт в Linux сервера от другого PHP скрипт с использованием SSH и оболочки

nclude('/Net/SSH2.php'); 

$ssh = new Net_SSH2('ip address'); 
if (!$ssh->login('user name', 'password')) { 
    exit('Login Failed'); 
} 

echo $ssh->exec('/usr/bin/nohup php /path/to/script/run.php > /path/to/log/run_log.log 2>&1 &'); 

Теперь мне нужно добавить некоторый код следующим образом, так что он ответит на завершение работы.

$output = shell_exec('if [ $? -eq "0" ];then echo "All done" else echo "Not Work" fi'); 
echo $output; 

Но он не работает. Средство run.php работает на сервере linux, но когда оно закончено, $output ничего не печатает. Не могли бы вы помочь?

+0

, пожалуйста, укажите более подробную информацию о «не работает». В противном случае вопрос недопустим. – Jakuje

+0

@Jakuje - я отредактировал выше. – tanvir

ответ

0

Так вот мой ответ:

$pid=0; 
$pid=$ssh->exec("(ps -ef | grep run.php | grep -v grep | awk '{print $2}')"); 

while ($pid >0) 
{ 
echo "Process id when running=".$pid."\n"; 
$pid =$ssh->exec("(ps -ef | grep run.php | grep -v grep | awk '{print $2}')"); 
} 
echo "Process is not running \n"; 

Объяснение: От Linux выход будет как ниже

bash-3.2$ ps -ef | grep run.php 
506  1455  1 3 10:56 ?  00:00:02 /path/to/script/run.php 

Так AWK '{печать $ 2}' даст значение 1455, которое является pid процесса

 Смежные вопросы

  • Нет связанных вопросов^_^