Existe uma maneira de fornecer tarefas seriais no terminal enquanto uma tarefa está em execução (sem usar um arquivo)?


14

Suponha que existam 2 tarefas t1, t2que podem ser executadas de maneira serial, como abaixo:

t1 ; t2
# OR
t1 && t2

Agora, suponha que eu esqueci de executar t2e t1já esteja executando; posso adicionar t2ao pipeline para que ele seja executado após a t1conclusão?

Respostas:


19

Sim você pode:

  1. Pause o trabalho atualmente em execução com o caractere de suspensão pressionando Ctrl+ Z.
  2. Digite fgou %adicione o que deseja à lista e execute-o, por exemplo:
    fg ; systemctl suspend # or
    % ; systemctl suspend
    Como fgretorna o valor de retorno do trabalho retomado, liste os operadores como &&e ||trabalhem conforme o esperado:
    fg && echo "Finished successfully!" # or
    % && echo "Finished successfully!"

man bash/ JOB CONTROL diz sobre o caractere de suspensão:

Digitando a suspender personagem (normalmente ^Z, Control- Z), enquanto um processo está sendo executado causas desse processo ser interrompido e retorna o controle para bash. (…) O usuário pode manipular o estado desse trabalho, usando o bgcomando para continuar em segundo plano, o fg comando para continuar em primeiro plano ou o killcomando para eliminá-lo. A ^Zentra em vigor imediatamente e tem o efeito colateral adicional de fazer com que a saída pendente e o cabeçote de impressão sejam descartados.

fgé explicado em man bash/ SHELL BUILTIN COMMANDS :

fg [ jobspec ]
Resume jobspec em primeiro plano, e torná-lo o trabalho atual. Se o jobspec não estiver presente, será usada a noção do shell do job atual. O valor de retorno é o do comando colocado em primeiro plano, ou falha se executado quando o controle de trabalho estiver desativado ou, quando executado com o controle de trabalho ativado, se jobspec não especificar um trabalho válido ou jobspec especificar um trabalho iniciado sem controle de trabalho .

Leitura adicional (além de man bash) sobre controle de trabalho:


+1, mas é uma pena que isso não funcione quando você se esquece t3de t1; t2; t3ou t1 && t2 && t3.
JoL

@JoL É verdade que - ^Z^Ze %-;%+;t3é bom o suficiente em alguns casos, mas está longe de ser uma solução real para o problema.
dessert

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.