O script Shell precisa ser executado duas vezes para funcionar conforme o esperado

2

Eu tenho o seguinte script de shell:

#!/bin/sh

# 1. Kill the process along with the screen
/usr/bin/pkill -f reportPrintingServer.jar

# 2. Start the printing server again.
/usr/bin/screen -S proRps -d -m /usr/bin/java -jar /opt/projects/pro/assets/report_printing_server/reportPrintingServer.jar

Se eu os executar no terminal por linhas, eles funcionam como esperado. Mas se eu executá-los em um script de shell, eu preciso executá-lo duas vezes para funcionar como esperado. Portanto, a primeira execução é matar o processo e a segunda é executar o servidor de impressão novamente.

Eu estou querendo saber se eu posso apenas executar o script de shell uma vez, e ele irá matar e reiniciar o servidor de impressão novamente.

    
por choz 29.01.2016 / 04:03

1 resposta

3

Ao inserir os comandos no terminal, é mais do que provável que você espere que cada comando seja concluído.

Quando os mesmos comandos são executados como parte de um script, eles podem ser concluídos muito rapidamente. pkill , por exemplo, enviará o comando kill, mas não esperará a saída do aplicativo.

Você pode fazer o script aguardar por um período de tempo usando o comando sleep .

Por exemplo:

/usr/bin/pkill -f reportPrintingServer.jar

# Wait a few seconds
sleep 5

/usr/bin/screen -S proRps -d -m /usr/bin/java -jar /opt/projects/pro/assets/report_printing_server/reportPrintingServer.jar
    
por Ken Sharp 30.01.2016 / 03:22