Como executar sequencialmente duas tarefas no linux [closed]

0

Estou usando um servidor keycloak quando executo este comando:

standalone.sh 

Este comando inicia o servidor e eu não consigo pará-lo até que eu execute o comando Ctrl-C. Eu pensei em executar uma instrução como esta:

standalone.sh && jboss-cli.sh -c --commands=shutdown

ou

standalone.sh ; jboss-cli.sh -c --commands=shutdown

Com base nesta pergunta Quais são o controle e o redirecionamento do shell? operadores? Descobri que ;

Will run one command after another has finished, irrespective of the outcome of the first.

e &&

Used to build AND lists, it allows you to run one command only if another exited successfully.

Mas no meu caso, a primeira tarefa não saiu e ainda está sendo executada. Existe alguma solução para executar outra tarefa que pare o primeiro?

    
por para 008 05.03.2018 / 14:21

2 respostas

1

Adicione um único & no final do primeiro comando.

standalone.sh & jboss-cli.sh -c --commands=shutdown

Esse único e comercial é um delimitador de comando, assim como ; , mas envia o comando anterior para ser executado de forma assíncrona, em segundo plano, e permite que os seguintes comandos sejam iniciados imediatamente.

    
por 05.03.2018 / 14:41
1

Como observado por user1404316 , standalone.sh & jboss-cli.sh -c --commands=shutdown é provavelmente o que você deseja. O único problema com isso é que, se o standalone.sh levar tempo para ser executado (o que provavelmente acontece), eu inseriria um sleep para compensar o tempo de execução, como:

standalone.sh & sleep $amount_of_time_in_seconds; jboss-cli.sh -c --commands=shutdown

    
por 05.03.2018 / 14:45