One-liner para executar um processo em um diretório atual sem saída e rejeitá-lo?

2

Estou tentando fazer algo bastante simples:

$ ( cd /opt/myprogram && ./myprocess.sh >/dev/null 2>&1 & ; disown $! )
-bash: syntax error near unexpected token ';'

Como posso extrair um one-liner para, em um sub-shell, executar um determinado script de uma determinada pasta, anulando a saída e enviá-lo para o plano de fundo?

    
por Naftuli Kay 24.01.2013 / 02:32

2 respostas

10

O problema é que você está usando & e ; juntos. Ambos são terminadores de comando e não podem ser usados ao mesmo tempo. Aqui está o seu exemplo corrigido:

( cd /opt/myprogram && ./myprocess.sh >/dev/null 2>&1 & disown )
    
por 24.01.2013 / 02:54
1

O utilitário nohup foi projetado para praticamente o que você está procurando:

Usage: nohup COMMAND [ARG]...
  or:  nohup OPTION
Run COMMAND, ignoring hangup signals.

If standard input is a terminal, redirect it from /dev/null.
If standard output is a terminal, append output to 'nohup.out' if possible,
'$HOME/nohup.out' otherwise.
If standard error is a terminal, redirect it to standard output.
To save output to FILE, use 'nohup COMMAND > FILE'.
    
por 24.01.2013 / 06:54

Tags