问题是这样的,我定义了一个String类型的数组,里面一共有5个字符串,每一个字符串本地测试都是可以正常运行得命令(linux下得),然后我通过for循环一次执行这个数组里面的命令的时候,有部分能成功运行,但是有一部分就无法正常运行,再次将无法执行得命令 拿到shell里面手工确认,却发现是正常的,百思不得其解,请教各位高手! 附部分代码:
String [] cmd = {"mv -f ./template/" + ftpname +".conf " + "/usr/local/httpd/vhost.d/" ,
"cp -rf ./template/tomcat/* " + "/var/www/virtual/" + ftpname +"/",
"adduser " + ftpname + " -d /var/www/virtual/" +ftpname ,
"echo " + "\"" +ftpname+":"+ftppass +"\"" +" | chpasswd",
"chown -R " + ftpname +":" + ftpname + " /var/www/virtual/" + ftpname +"/"};
for (int i = 0; i < cmd.length; i++) {
System.out.println(cmd[i]);
p = run.exec(cmd[i]);
p.waitFor();
}
请教各位下关于exec() 这个方法 到底应该怎么用,才能保证命令一条一条正常运行????万分感谢
String [] cmd = {"mv -f ./template/" + ftpname +".conf " + "/usr/local/httpd/vhost.d/" ,
"cp -rf ./template/tomcat/* " + "/var/www/virtual/" + ftpname +"/",
"adduser " + ftpname + " -d /var/www/virtual/" +ftpname ,
"echo " + "\"" +ftpname+":"+ftppass +"\"" +" | chpasswd",
"chown -R " + ftpname +":" + ftpname + " /var/www/virtual/" + ftpname +"/"};
for (int i = 0; i < cmd.length; i++) {
System.out.println(cmd[i]);
p = run.exec(cmd[i]);
p.waitFor();
}
请教各位下关于exec() 这个方法 到底应该怎么用,才能保证命令一条一条正常运行????万分感谢
这条运行不了 还有cp -rf ./template/tomcat/* " + "/var/www/virtual/" + ftpname + "/", 这条, 诶。。我通宵搞了一个晚上了,之前cp -rf ./template/tomcat/* " + "/var/www/virtual/" + ftpname + "/", 这条还可以运行,后来把 "echo " + """ +...这个加上,结果就出问题了。。晕死,不知道老大还有没好的办法?谢谢先
mv -f ./template/zizhulaoda.conf /usr/local/httpd/vhost.d/
cp -rf ./template/tomcat/* /var/www/virtual/zizhulaoda/
adduser zizhulaoda -d /var/www/virtual/zizhulaoda
echo "zizhulaoda:zizhulaoda" | chpasswd
"zizhulaoda:zizhulaoda" | chpasswd
chown -R zizhulaoda:zizhulaoda /var/www/virtual/zizhulaoda/
这个输出和我的一样,但是就是不行,第2个,第4个没有执行
"cp -rf ./template/tomcat/* " + "/var/www/virtual/" + ftpname + "/",
"adduser " + ftpname + " -d /var/www/virtual/" + ftpname,
"echo " + """ + ftpname + ":" + ftppass + """ + " | chpasswd",
"chown -R " + ftpname + ":" + ftpname + " /var/www/virtual/" + ftpname + "/" };
Process p;
for (int i = 0; i < cmd.length; i++) {
System.out.println(cmd[i]);
p = run.exec(cmd[i]);
BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));
String str = "";
while ((str = br.readLine()) != null) {
System.out.println(str);
}
br.close();
conf logs server shared temp webapps work
我在shell里面执行就可以正常运行 已经将文件复制过去,
System.out.println(cmd[i]);
输出了?
我的那一大段啥也没有输出吗???太奇怪了吧!!!
你仔细看看上面的,就这个是通过你写得输出流输出得
而这个帐户没有运行某个命令的权限
Runtime.exec()直接跑SHELL. 导致不稳定的原因有很多,操作系统.权限.执行完一个命令在等候