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 )
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?
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'.