php 获取linux/ubuntu命令执行结果的方法
本文主要介绍了php 获取linux/ubuntu命令执行结果的方法,欢迎大家的学习。
php执行linux命令
我们经常需要监测web服务器运行状态,就需要通过php来调用shell命令来获取所需的信息。
简单介绍一下几个常用相关函数。
exec()
exec($command, array &output = null, &return_var = null)有三个参数。
执行给定的命令,但不输出结果,而是返回结果的最后一行。虽然它只返回命令结果的最后一行,但用第二个参数array 可以得到完整的结果,
方法是把结果逐行追加到array的结尾处。所以如果array不是空的,在调用之前最好用unset()最它清掉。
只有指定了第二 个参数时,才可以用第三个参数,用来取得命令执行的状态码。
shell_exec()
shell_exec($cmd)只有一个参数,它会获取$cdm执行之后所有的数据。
system()
获取命令执行的结果
popen()
popen函数的执行流程:
1、使用pipe系统调用创建一个管道
2、创建一个新的进程,将拷贝标准输入或者标准输出到文件描述符。
3、关闭pipe返回的文件描述符。
4、调用execve系统调用来执行命令。
5、关闭管道
popen($cmd,$status)是通过”管道”的机制,来创建一个进程,进而来执行$cmd命令的,$status是管道的两种状态,分别是”r”和”w”,
而上面所说的命令只有”r”的方式,当执行完shell命令之后,popen的返回值是一个普通的标准I/O流,所以必须要用pclose()将其关闭。
php命令行里获取etho网卡的IP
function getIp()
{
if (PHP_SAPI === 'cli') {
$buffer = "";
$handle = popen("ifconfig eth0|grep 'inet addr'|awk -F'[ :]' '{print $13}'", 'r');
while (!feof($handle)) {
$buffer .= fgets($handle);
}
pclose($handle);
$server_ip = rtrim($buffer);
} else {
if (isset($_SERVER)) {
if ($_SERVER['SERVER_ADDR']) {
$server_ip = $_SERVER['SERVER_ADDR'];
} else {
$server_ip = $_SERVER['LOCAL_ADDR'];
}
} else {
$server_ip = getenv('SERVER_ADDR');
}
}
return $server_ip;
}
以上这篇php 获取linux/ubuntu命令执行结果的方法的实例就是小编分享给大家的全部内容了,希望能给大家一个参考。
相关推荐
深度学习 -- 损失函数
深度残差网络(Deep Residual Networks (ResNets))
深度学习 -- 激活函数
神经网络训练 -- 调整学习速率
生成对抗网络(GAN)改进与发展
生成对抗网络(GAN)优点与缺点
生成对抗网络(GAN)的训练
生成对抗网络(GAN)基本原理
生成模型与判别模型