Java调用linux终端命令

因为要实现用户注册成功后,创建gluster volume,所以就先看了一下,如何使用java调用linux终端命令

示例源码如下:

import java.io.InputStreamReader;
import java.io.LineNumberReader;

public class RuntimeTest{
     public static void main(String args[]){
try
{
 Process process = Runtime.getRuntime().exec ("ls"); 

 InputStreamReader ir=new InputStreamReader(process.getInputStream());
 LineNumberReader input = new LineNumberReader (ir);

 String line;
 while ((line = input.readLine ()) != null){
  System.out.println(line);
}
catch (java.io.IOException e){
 System.err.println ("IOException " + e.getMessage());
} 

}
}

参考资料:

1.http://zhidao.baidu.com/question/41907875.html
2.http://www.blogjava.net/envoydada/archive/2007/05/08/115877.html
3.http://blog.youkuaiyun.com/HEYUTAO007/article/details/5705499
4.http://blog.youkuaiyun.com/bigbuiding/article/details/1675105
5.http://dangflying.blog.163.com/blog/static/8693721820111218320357/

当然按照参考资料给的例子,调用linux的top,ls等系统命令是没问题题的,但当用runtime.exec去执行终端下的sudo gluster命令出现了问题,根本执行不了,然后我尝试把gluster volume命令放在shell脚本中,用crontab定时执行这个脚本,发现也是一样,sudo gluster命令没有执行,然后我再脚本中多加了一行sudo mkdir test,也没有执行,而换成mkdir test后确执行了,说明是用sudo的问题,即用户权限问题,因为gluster命令在执行时,需要加sudo才能执行,那么如果shell脚本中有sudo命令,如何才能正确执行呢?有两种方案:
1.切换到root模式下,即超级用户模式下,就可以正确执行了
2.如果要在普通用户模式下,如何执行超级用户下的终端命令呢?在用到sudo执行命令时免密码就可以了,因为普通用户下,当输入sudo命令后,需要输入密码,这个密码是当前用户的密码,将这个密码省去就可以执行超级用户的命令了

参考资料:

1.http://blog.sina.com.cn/s/blog_700132870100t8lj.html
2.http://bbs.chinaunix.net/thread-1916342-1-1.html

如果在java中已成功调用linux终端命令了,那么放在JSP中也就没问题了

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值