php - 使用 ssh 和 shell 从另一个 php 脚本在 Linux 服务器中运行 php 脚本

标签 php linux shell ssh phpseclib

我可以运行位于 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 不会打印任何内容。能否请你帮忙?

最佳答案

这是我的答案:

$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

关于php - 使用 ssh 和 shell 从另一个 php 脚本在 Linux 服务器中运行 php 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32604777/

相关文章:

php - 在进行下拉选择之前隐藏字段的搜索框

php - 让所有用户使用相同的用户名/密码插入 mysql 数据库是否不安全?

php - Magento - 在 Toplinks 中显示购物车图像而不是 "My Cart"?

获取多行时出现 PHP 错误

linux - 在 Bash 中将一个变量分配给另一个变量?

linux - 在 linux 中读取文件

bash - 使用 cut 和 grep 进行报告

windows - 如何编写跨平台安装程序脚本?

linux - CRON 进程记录的 "tput: No value for $TERM and no -T specified "错误

bash - 使用 bash 一个一个地读取 zip 文件中的文件