【问题标题】:Run php script in linux server from another php script using ssh and shell使用 ssh 和 shell 从另一个 php 脚本在 linux 服务器中运行 php 脚本
【发布时间】:2015-09-16 09:32:37
【问题描述】:

我可以运行位于 linux 服务器中的 php 脚本,如下所示:

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 不会打印任何内容。能否请你帮忙?

【问题讨论】:

  • 请提供有关“不工作”的更多详细信息。否则这个问题是无法挽救的。
  • @Jakuje - 我在上面进行了编辑。

标签: php linux shell ssh phpseclib


【解决方案1】:

所以这是我的答案:

$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 '{print $2}' 将提供值 1455,它是进程的 pid

【讨论】:

    猜你喜欢
    • 2013-12-26
    • 1970-01-01
    • 1970-01-01
    • 2013-01-26
    • 2019-12-03
    • 1970-01-01
    • 1970-01-01
    • 2012-03-28
    相关资源
    最近更新 更多