因为要实现用户注册成功后,创建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中也就没问题了