Iniciando o processo no servidor remoto com SSH - não deseja processar em segundo plano

0

Eu escrevi o seguinte script:

#Other code above ...

read -p "Enter the full hostname for the Component we need to degrade: " input

#I move the file that I want to execute across to the specified host
rsync -azvh ~/RTL_COUNTER.sh username@$input:/home/username/

#I then want to run this process, and only have my shell script move forward when it completes (it contains a loop)
#Note that I have to sudo up here as the shell script being executed queries the JMX

ssh -t username@$input "sudo su - SUPERUSE;/home/username/RTL_COUNTER.sh" 

#Other code follows ...

Isso funciona, no entanto, eu preciso da execução de /users/username/RTL_COUNTER.sh para não ser executada em segundo plano - esse script não deve continuar até que o script seja concluído.

Existe alguma maneira de fazer isso?

NOTA: RTL_COUNTER.sh tem esta aparência:

#!/bin/bash

test="$(echo "get -s -b com.service.oms:name=XXXXXTransactionMonitor RunningTasks" | /usr/local/latest/bin/java -Xms256m -Xmx256m -jar /usr/local/bin/jmxterm-1.0-alpha-4-uber.jar --url localhost:XXXXXXXXX -urole -p ' grep controlRole PW HERE | awk '{print $2}' ' -n -v silent | wc -l)"
echo "${test}"

function check {
        test="$(echo "get -s -b com.service.oms:name=XXXXXTransactionMonitor RunningTasks" | /usr/local/latest/bin/java -Xms256m -Xmx256m -jar /usr/local/bin/jmxterm-1.0-alpha-4-uber.jar --url localhost:xxxxx -u controlRole -p ' grep role XXXXXX | awk '{print $2}' ' -n -v silent | wc -l)"
                if [ ${test} != "1" ]
                then
                        echo  ${test}
                        check
                else
                        echo "###########################"
                        echo "#SAFE TO DELETE - NO TASKS#"
                        echo "###########################"
                fi
                }
check
    
por wdger 26.10.2017 / 13:12

1 resposta

0

Você parece ter um pequeno erro de sintaxe ...

sudo su - SUPERUSE;/home/username/RTL_COUNTER.sh

significa ...

# su to a SUPERUSE + exit, because of the ";"
# execute the script as whatever use ssh'ed into machine
/home/username/RTL_COUNTER.sh

Tente isso ...

sudo su - SUPERUSE -- /home/username/RTL_COUNTER.sh

Observe o ";" removido personagem.

    
por 26.10.2017 / 13:50