最近在一个web项目中要调用shell脚本,
把当天生产的一个文件推送到另一台机器上去,
脚本内容大致如下:
#!/bin/bash
for i in `cat aa`
do
date=`date +%Y_%m_%d`
file=${date}_some.gz
/bin/cp $file some.gz >> copy.log 2>&1 && /usr/bin/scp some.gz admin@192.168.3."$i":/path/to/go >> copy.log 2>&1
sleep 0.1
done
java程序片段如下:
Process pid = null;
String[] cmd = {"/bin/sh", "-c", shellCommand};
//执行Shell命令
return Runtime.getRuntime().exec(cmd).waitFor();
手动执行脚本时没有任何问题,
但是通过Runtime.exec执行是却总是看不到不到结果,
copy.log里也没有任何信息。
后来把脚本改成如下:
#!/bin/bash
echo "Start" >> copy.log
path="/path/from/"
target="some.gz&