Que tal
pid=$$; ( sleep 1; echo goodbye; kill $pid ) & echo hello
Como eu poderia concatenar vários comandos em uma única linha, mas também executá-los todos em segundo plano? Isso não funcionou:
sleep 1m & && echo "goodbye" & && exit &.
sleep 1m & ; echo "goodbye" & ; exit &.
sleep 1m & echo "goodbye" & exit &.
Eu preciso ter todos os comandos para efetuar sessão de primeiro plano . Por exemplo, exit &
deve terminar a sessão de primeiro plano.
Nota: eu uso como alternativa ao utilitário at
. A história de por que eu preciso dessa alternativa é longa, mas pode-se dizer a partir dessas perguntas que fiz aqui (e apresentadas cronologicamente abaixo), infelizmente não tive uma solução satisfatória (em relação ao meu caso específico):
Aqui, a resposta por dataved parece promissora.
Bem, IMO, a melhor maneira de fazer isso e poupar o trabalho seria usar o utilitário de tela:
1. screen -R <name-of-the-screen-session>
2. <the-command(s)>
3. ctrl + a + d ### To exit the screen session
4. To log back: screen -x <name-of-the-screen-session>
O &&
é um operador condicional. Ele executará o comando à direita se-e-somente-se o comando à esquerda sair com sucesso. Como você está executando o comando à esquerda em segundo plano, seu código de retorno não pode ser determinado e as coisas quebram e não funcionam como esperado.
Não use &&
. Você deve fazer command1 & command2 & command3
ou ( command1; command2; command3 )&
. O segundo executará todos os comandos sequencialmente em um subshell que está sendo executado em segundo plano.
Tags syntax