exec("(shbuild.sh>/dev/null&)");
放到后台执行。
2. 关于shell_exec的用法
exec()是用于执行shell命令的函数。它返回执行并返回命令输出的最后一行,但你可以指定一个数组作为第二个参数,这样输出的每一行都会作为一个元素存入数组。使用方式如下:
1.代码如下:
<?php
$last = exec('ls', $output, $return);
print_r($output);
echo "Return [$return]";
?>
2.假设ls命令在shell中手工运行时会产生如下输出:
代码如下:
$ ls
total 0
-rw-rw-r-- 1 chris chris 0 May 21 12:34 php-security
-rw-rw-r-- 1 chris chris 0 May 21 12:34 chris-shiflett
3.当通过上例的方法在exec()中运行时,输出结果如下:
代码如下:
Array
(
[0] => total 0
[1] => -rw-rw-r-- 1 chris chris 0 May 21 12:34 php-security
[2] => -rw-rw-r-- 1 chris chris 0 May 21 12:34 chris-shiflett
)
Return [0]
这种运行shell命令的方法方便而有用,但这种方便为你带来了重大的风险。如果使用了被污染数据构造命令串的话,攻击者就能执行任意的命令。
我建议你有可能的话,要避免使用shell命令,如果实在要用的话,就要确保对构造命令串的数据进行过滤,同时必须要对输出进行转义:
4.代码如下:
<?php
$clean = array();
$shell = array();
/* Filter Input ($command, $argument) */
$shell['command'] = escapeshellcmd($clean['command']);
$shell['argument'] = escapeshellarg($clean['argument']);
$last = exec("{$shell['command']} {$shell['argument']}", $output, $return);
?>
3. PHP中exec函数和shell_exec函数的区别
这两个函数都是执行linux命令函数,不同的是获取返回结果不一样,exec只能获取最后一行数据,shell_execu则可以获取全部数据。
假如脚本路径下有如下文件:
复制代码
代码如下:
-bash-4.1#
ll
总用量
12
-rw-rw-r--.
1
www
web
133
7月
16
15:00
a.php
-rw-r--r--.
1
lee
web
59
2月
29
17:05
b.php
-rw-r--r--.
1
lee
web
81
3月
8
17:00
c.php
exec例子
复制代码
代码如下:
<?php
/**
*
exec与shell_exec的区别
*
琼台博客
*/
$data
=
exec('/bin/ls
-l');
echo
'<pre>';
print_r($data);
echo
'</pre>';
?>
执行结果
复制代码
代码如下:
-rw-r--r--.
1
lee
web
81
Mar
8
17:00
c.php
shell_exec例子
复制代码
代码如下:
<?php
/**
*
exec与shell_exec的区别
*
琼台博客
*/
$data
=
shell_exec('/bin/ls
-l');
echo
'<pre>';
print_r($data);
echo
'</pre>';
?>
执行结果
复制代码
代码如下:
total
12
-rw-rw-r--.
1
www
web
139
Jul
16
2012
a.php
-rw-r--r--.
1
lee
web
59
Feb
29
17:05
b.php
-rw-r--r--.
1
lee
web
81
Mar
8
17:00
c.php
所以平时使用exec函数的童鞋注意了,如果你需要获取全部返回信息,就应该使用shell_exec函数,当然,如果命令执行结果只有一行返回信息,那么使用哪个都无所谓。
4. shell编程中,exec $0 是什么意思
$0代表执行该脚本时输入的第一个参数。
5. Linux下有什么Shell命令
Shell 命令的详细使用方法。
adser 创建新的用户账户
alias 设置命令的别名
bzips .bz2的文件压缩程序
cal 月历显示
cat 将所有内容输出到标准输出设备
chfn 更改finger命令显示的信息
chgrp 变更文件与目录的所属组
chmod 更换文件或目录的权限
chown 更换文件或目录的拥有者或所在组
clear 清除画面上的信息
col 滤除控制字符
cp 复制文件或目录
crontab 设置定时器
date 设置显示系统时间及日期
dd 由键盘输入文件中的数据,然后依照指定格式来转换数据,再输出至所指定的文件或屏幕上
df 显示磁盘文件系统的使用状况
dmesg 显示开机信息
显示目录或文件所占磁盘空间
e2fsck 检查ext2文件系统
echo 文字显示
edquota 编辑quota
egrep 查找文件中符合条件的字符串
exec shell执行命令后即交出控制权
export 设置显示环境变量
fdisk 磁盘分割(分区)
fg 前台执行程序或命令
fgrep 查找文件中符合条件的字符串
file 识别文件类型
find 查找文件或目录
finger 显示用户信息
free 查看内存状态
fsck 检查文件系统并试着修复错误
ftp 传输文件
grep 搜索文件中符合条件的字符串
groupadd 创建组
groupdel 删除组
groupmod 改变组识别码或名称
gunzip 文件解压缩
gzip 文件压缩
halt 关闭系统
help shell创建命令内容
history 列出所有使用过的命令
hostname 查询及设置主机名称
id 显示用户ID及所属的组ID
ifconfig 显示或设置网络上状态
insmod 加载模块
jobs 显示正在后台执行的工作
kill 删除执行中的程序或工作
last 列出目前与过去登录系统的用户相关信息
less 显示文件内容
lilo 安装内核加载、开机管理程序
linuxconf 设置Linux系统
ln 连接文件或目录
locate 寻找文件
login 登录系统
logout 注销系统
ls 列出目录内容
lsmod 显示已加载系统的模块名称
mail E-mail管理程序
make 编译系统核心或模块
man 在线查询命令
m 复制MS-DOS文件
mdel 删除MS-DOS文件
mdeltree 删除MS-DOS文件及包含的子目录文件
mdir 显示MS-DOS目录
mkbootdisk 创建目前系统的引导盘
mkdir 创建目录
mke2fs 创建ext2文件系统
mkfs 创建各种文件系统
more 一页一页地显示文件内容(文本文件)
miunt 挂入文件系统
mouseconfig 设置鼠标相关参数
mv 移动或更名现有的文件或目录
netconfig Red Hat Linux用来设置网络功能的图形接口程序
netstat 显示目前系统的网络状态
nice 变更程序执行时的优先等级
nohup 在用户注销系统后继续以后台的方式执行指定的命令
open 查找第一个可使用的虚拟终端,并执行位于“--”符号后的命令
passwd 提供管理员及用户管理或变更密码
patch 利用修补文件来修改源文件
pine 邮件处理程序,它可收发电子邮件及浏览新闻组
ping 使用ICMP对远程主机发出要求响应的信息,以侦测远程主机的网络功能是否正常
ps 显示程序执行的状况
pwd 显示目前的工作目录
quota 查询磁盘空间限制以及使用情形
quotacheck 检查磁盘使用空间及限制
quotaoff 关闭磁盘使用空间限制
quotaon 开启磁盘使用空间限制
reboot 停止系统运作并重新开机
renice 重新调整程序执行的优先级
repquota 显示磁盘空间限制状况
rm 删除文件或目录
rmdir 删除目录
rpm 管理Red Hat Linux套件
set 设置Shell的执行方式
setup 设置公用程序,可设置的选项包括:登录认证方法、键盘配置、
鼠标配置、开机启动服务、声卡本配置、时区设置和 X Window配置等
shutdown 系统关机
startx 启动 X Window
stat 显示inode内容
su 变更用户身份
sync 将内存缓冲区内的数据写入磁盘
tail 列出文件内容最后部分
talk 和其他用户交谈
tar 文件备份
telnet 登录远程主机
top 显示及管理执行中的程序
traceroute 显示封包到远程主机间的详细路径
umask 在创建文件时预设的权限屏蔽
umount 卸载文件系统
unalias 删除别名
uname 显示系统信息
uncompress 将.Z文件解压缩
unzip 将.Zip文件解压缩
useradd 创建用户账号
userdel 删除用户账户
vi 编辑文本文件
w 显示目前登录系统的用户信息
wall 将信息传送至每位终端用户
whereis 查找文件,预设whereis去查找的文件包括:/bin、/etc、/sbin、
/usr/bin、/usr/etc、/usr/games、/usr/include、/usr/lib、
/usr/local、/usr/man、/usr/sbin、/usr/src、/usr/local/bin、
/usr/local/etc、/usr/local/game、/usr/local/lib 和/usr/local/man>
which 在环境变量¥PATH 设置的目录中,搜索符合条件的文件
who 显示目前登录系统的用户信息
whoami 显示用户名称
whois 搜索并显示用户信息
write 可传送信息给另一位登录的用户
Xconfigurator 设置 Xfree86
xf86config 设置XFree86
zip 压缩程序
6. linux shell脚本 解释exec
判断/var/log/x.log文件是否为空
如果为空,则将exec的操作结果放入/var/log/x.log中
exec应该是一个命令,但是这边这个语法没有意义
7. 关于Linux的shell的exec命令
wall是向所有登录系统的用户发送信息,消息的内容是 "Thanks for all the fish" , 相当于短信群发。
exec 3<afile 打开文件afile,文件描述符是3,然后这个3就可以代表文件afile,比如
cat <&3 查看文件afile的内容