Em bash
, dash
e pdksh
, o &
termina a linha de comando nohup ./script.sh
, então você não pode ter ;
depois disso.
Com ;
, você receberá
bash: syntax error near unexpected token ';'
assim como você vai conseguir se você tentar executar o comando ;
por si mesmo.
Em ksh93
e zsh
, seu comando funciona bem como está.
Para bash
e as outras shells, faça isso:
$ nohup ./script.sh & tail -f nohup.out
Entretanto, esteja ciente de que, da mesma maneira que ao executar um pipeline, as diferentes partes do pipeline são iniciadas (mais ou menos) ao mesmo tempo. Se tail
for iniciado antes do arquivo nohup.out
existir, ele falhará com algo como
tail: nohup.out: No such file or directory
Para contornar isso:
$ nohup ./script.sh & sleep 1 && tail -f nohup.out
ou, se você não gosta de esperar por um segundo:
$ nohup ./script.sh & while ! test -f nohup.out; do :; done && tail -f nohup.out
ou, como "VPfB" aponta nos comentários abaixo,
$ nohup ./script.sh >output & tail -f output