资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

代码执行linux命令 linux编写代码

如何通过PHP执行linux命令

你想问得是php如何执行shell命令把?\x0d\x0a\x0d\x0a可以用system(),exec(),passthru()这三个函数实现\x0d\x0a虽然这三个命令都能执行linux系统的shell命令,但是其实他们是有区别的:\x0d\x0a system() 输出并返回最后一行shell结果。\x0d\x0a exec() 不输出结果,返回最后一行shell结果,所有结果可以保存到一个返回的数组里面。\x0d\x0a passthru() 只调用命令,把命令的运行结果原样地直接输出到标准输出设备上。\x0d\x0a 相同点:都可以获得命令执行的状态码\x0d\x0a例子:system("ls -al");\x0d\x0a【使用之前要在php.ini中把safe_mode关闭】

创新互联建站是一家集网站建设,襄州企业网站建设,襄州品牌网站建设,网站定制,襄州网站建设报价,网络营销,网络优化,襄州网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。

如何在代码中跑Linux指令

在java程序中如何调用linux的命令?如何调用shell脚本呢? 这里不得不提到java的process类了。 process这个类是一个抽象类,封装了一个进程(你在调用linux的命令或者shell脚本就是为了执行一个在linux下执行的程序,所以应该使用process类)。 process类提供了执行从进程输入,执行输出到进程,等待进程完成,检查进程的推出状态,以及shut down掉进程。 至于详细的process类的介绍放在以后介绍。 另外还要注意一个类:Runtime类,Runtime类是一个与JVM运行时环境有关的类,这个类是Singleton的。 这里用到的Runtime.getRuntime()方法是取得当前JVM的运行环境,也是java中唯一可以得到运行环境的方法。(另外,Runtime的大部分方法都是实例方法,也就是说每次运行调用的时候都需要调用到getRuntime方法) 下面说说Runtime的exec()方法,这里要注意的有一点,就是public Process exec(String [] cmdArray, String [] envp);这个方法中cmdArray是一个执行的命令和参数的字符串数组,数组的第一个元素是要执行的命令往后依次都是命令的参数,envp感觉应该和C中的execve中的环境变量是一样的,envp中使用的是name=value的方式。 下面说一下,如何使用process来调用shell脚本 例如,我需要在linux下实行linux命令:sh test.sh,下面就是执行test.sh命令的方法: 这个var参数就是日期这个201102包的名字。 String shpath="/test/test.sh"; //程序路径 Process process =null; String command1 = “chmod 777 ” + shpath; process = Runtime.getRuntime().exec(command1); process.waitFor(); String var="201102"; //参数 String command2 = “/bin/sh ” + shpath + ” ” + var; Runtime.getRuntime().exec(command2).waitFor();

java程序里如何调用linux命令?

Java可以通过Runtime调用Linux命令,形式如下:

Runtime.getRuntime().exec(command)

但是这样执行时没有任何输出,因为调用Runtime.exec方法将产生一个本地的进程,并返回一个Process子类的实例(注意:Runtime.getRuntime().exec(command)返回的是一个Process类的实例)该实例可用于控制进程或取得进程的相关信息。

由于调用Runtime.exec方法所创建的子进程没有自己的终端或控制台,因此该子进程的标准IO(如stdin,stdou,stderr)都通过Process.getOutputStream(),Process.getInputStream(),Process.getErrorStream()方法重定向给它的父进程了。

用户需要用这些stream来向子进程输入数据或获取子进程的输出,下面的代码可以取到linux命令的执行结果:

try{

String[]cmd=newString[]{”/bin/sh”,“-c”,”ls“};

Processps=Runtime.getRuntime().exec(cmd);

BufferedReaderbr=newBufferedReader(newInputStreamReader(ps.getInputStream()));

StringBuffersb=newStringBuffer();

Stringline;

while((line=br.readLine())!=null){

sb.append(line).append(”\n”);

}

Stringresult=sb.toString();

System.out.println(result);

}catch(Exceptione){

e.printStackTrace();

}

怎么用java代码运行linux命令

以下方法支持Linux和windows两个系统的命令行调用。还用到了apache的lang工具包commons-lang3-3.1.jar来判断操作系统类型、也用到了和log4j-1.2.16.jar来打印日志。至于rm -rf 是否能成功删除文件,可以手动去调用命令行试试。

private String callCmd(String cmd) throws InterruptedException, UnHandledOSException, ExecuteException {

if(SystemUtils.IS_OS_LINUX){

try {

// 使用Runtime来执行command,生成Process对象

Process process = Runtime.getRuntime().exec(

new String[] { "/bin/sh", "-c", cmd });

int exitCode = process.waitFor();

// 取得命令结果的输出流

InputStream is = process.getInputStream();

// 用一个读输出流类去读

InputStreamReader isr = new InputStreamReader(is);

// 用缓冲器读行

BufferedReader br = new BufferedReader(isr);

String line = null;

StringBuilder sb = new StringBuilder();

while ((line = br.readLine()) != null) {

System.out.println(line);

sb.append(line);

}

is.close();

isr.close();

br.close();

return sb.toString();

} catch (java.lang.NullPointerException e) {

System.err.println("NullPointerException " + e.getMessage());

logger.error(cmd);

} catch (java.io.IOException e) {

System.err.println("IOException " + e.getMessage());

}

throw new ExecuteException(cmd + "执行出错!");

}

if(SystemUtils.IS_OS_WINDOWS){

Process process;

try {

//process = new ProcessBuilder(cmd).start();

String[] param_array = cmd.split("[\\s]+");

ProcessBuilder pb = new ProcessBuilder(param_array);

process = pb.start();

/*process=Runtime.getRuntime().exec(cmd);*/

int exitCode = process.waitFor();

InputStream is = process.getInputStream();

InputStreamReader isr = new InputStreamReader(is);

BufferedReader br = new BufferedReader(isr);

String line;

StringBuilder sb = new StringBuilder();

while ((line = br.readLine()) != null) {

System.out.println(line);

sb.append(line);

}

is.close();

isr.close();

br.close();

return sb.toString();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

throw new ExecuteException(cmd + "执行出错!");

}

throw new UnHandledOSException("不支持本操作系统");

}


网站标题:代码执行linux命令 linux编写代码
标题路径:http://cdkjz.cn/article/dojjejh.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

业务热线:400-028-6601 / 大客户专线   成都:13518219792   座机:028-86922220