Background um processo e execute algo com um comando

0

Provavelmente seria mais fácil fazer apenas com um script, mas me pergunto por que não posso fazer isso com um comando. O que eu tentei até agora:

$ (ls >/dev/null &) && echo $!
3135
$ (ls >/dev/null &) ; echo $! #bad idea, but if that worked, I could just add 'sleep 0.1'
3135
$ ls >/dev/null & ; echo $!
bash: syntax error near unexpected token ';'
$ 'ls >/dev/null &' && echo $!
3135
$ 'ls >/dev/null &' ; echo $!
3135

O 3135 number é um PID de um último processo em segundo plano que contém a variável $! , e permanece inalterado (também estou usando o Konsole e para obter êxito em um processo, ele imprime algo como [1] PID ) . Infelizmente, nenhum dos comandos executados envia o processo para um segundo plano.

    
por Hi-Angel 06.11.2014 / 10:23

1 resposta

2

Isso deve fazer o que você quer:

$ ls > /dev/null & echo $!

Como você estava forçando o comando background em um subprocesso de várias maneiras, o primeiro shell não tinha nenhum processo em segundo plano e, portanto, $! não foi atualizado.

Agora, o processo de segundo plano é iniciado pelo mesmo shell que executa echo $! , então agora ele faz o que você quer.

    
por 06.11.2014 / 10:56