linux命令行函数 linux的命令行指的是什么( 五 )


string
[array],
int
[return_var]);
返回值:
字符串
详细介绍:
本函数执行输入
command
的外部程序或外部指令 。它的返回字符串只是外部程序执行后返回的最后一行;若需要完整的返回字符串,可以使用
PassThru()
这个函数 。
要是参数
array
存在,command
会将
array
加到参数中执行,若不欲
array
被处理,可以在执行
exec()
之前呼叫
unset() 。若是
return_var

array
二个参数都存在,则执行
command
之后的状态会填入
return_var
中 。
值得注意的是若需要处理使用者输入的资料 , 而又要防止使用者耍花招破解系统 , 则可以使用
EscapeShellCmd() 。
实例代码:
复制代码
代码如下:
?php
echo
exec('whoami');
?
popen函数
说明:打开文件 。
语法:int
popen(string
command,
string
mode);
返回值:
整数
详细介绍:
本函数执行指令开档,而该文件是用管道方式处理的文件 。用本函数打开的文件只能是单向的
(只能读或只能写),而且一定要用
pclose()
关闭 。在文件操作上可使用
fgets()、fgetss()

fputs() 。若是开档发生错误,返回
false
值 。
实例代码:
复制代码
代码如下:
?
$fp
=
popen("/bin/ls","r"
);
?
PHP监控linux服务器负载
在实际项目的应用中,我们由于各种条件的现实,利用PHP来实现服务器负载监控将是一种更为灵活的方式 。
由于Web
Server以及PHP的实现方式所限,我们在现实环境中很难利用PHP去调用一些Linux中需要root权限才能执行的程序,对此 , 我从网上找到另外一种方式来绕开这个限制 。首先先写个c程序中转调用系统命令,然后用PHP去执行此c程序 。
c程序
首先写个c文件,比如/usr/local/ismole/w.c
复制代码
代码如下:
#includestdio.h
#includestdlib.h
#includesystypes.h
#includeunistd.h
int
main()
{
uid_t
uid
,euid;
//note
获得当前的uid
uid
=
getuid();
//note
获得当前euid
euid
=
geteuid();
//note
交换这两个id
if(setreuid(euid,
uid))
perror("setreuid");
//note
执行将要执行linux系统命令
system("/usr/bin/w");
return0;
}
编译该文件gcc
-o
w
-Wall
w.c , 这时会在当前目录下生成程序w 。改变此程序的属主chmod
u+s
./w 。
PHP执行
文件内容如下,放在web目录下,访问就会输出当前的服务器负载情况 。
复制代码
代码如下:
?php
/*
More
Original
PHP
Framwork
Copyright
(c)
2007
-
2008
IsMole
Inc.
$Id:
serverMonitor.php
408
2008-12-02
08:07:40Z
kimi
$
*/
//note
key的验证过程
if($key
!=
$authkey)
{
//
exit('key
error);
}
$last_line
=
exec('/usr/local/ismole/w',
$retval);
$returnArray
=
explode("load
average:
",
$retval[0]);
$returnString
=
$returnArray[1];
echo
$returnString;
 按照上面的实例,我们可以用PHP来做任何我们想执行的Linux系统命令,SVN更新,服务器监控 , 备份 , 恢复 , 日常维护等等 。

推荐阅读