Shell脚本在传递参数时返回-1作为执行状态

时间:2015-04-17 09:26:26

标签: linux bash shell ssh jclouds

我正在尝试使用jclouds SSH实用程序将脚本复制到一个VM。 以下是我的剧本:

Java代码:

String filename = getKey().toLowerCase() + ".sh";
script = Resources.toString(url, Charsets.UTF_8);
ssh.put("/tmp/" + filename, script);



    if(failure.equalsIgnoreCase("killprocesses")){
        String processToKill = getProcessName();
         response = ssh.exec("/bin/bash /tmp/" + filename + " " + processToKill);
        } 

Killprocesses.sh文件

#!/bin/bash
# Script for KillProcesses Chaos Monkey
var1=$1
cat << EOF > /tmp/kill_loop.sh
#!/bin/bash
while true;
do
    pkill -KILL -f $var1;
    sleep 1
done
EOF

nohup /bin/bash /tmp/kill_loop.sh &

Killprocesses.sh文件从java代码中获取参数。它在执行后返回以下错误。

org.jclouds.ssh.SshException: bad status -1 ExecResponse(command=[/bin/bash /tmp/killprocesses.sh python])
at org.jclouds.ssh.jsch.JschSshClient$ExecConnection.create(JschSshClient.java:426)
at org.jclouds.ssh.jsch.JschSshClient$ExecConnection.create(JschSshClient.java:397)
at org.jclouds.ssh.jsch.JschSshClient.acquire(JschSshClient.java:177)

如果我在shell脚本中对参数进行硬编码,则不会抛出任何错误。 如果我作为参数传递,请任何人帮助我理解退出状态的差异。

0 个答案:

没有答案