Mensagens no novo terminal depois de usar o nohup

3

Estou tentando executar alguns comandos de forma assíncrona em um script de login ( .bash_profile ).

Quando abro um novo terminal, vejo mensagens como esta. Eles também aparecem quando eu entro em um sistema por SSH.

Last login: Sat Jun 11 19:21:44 on ttys001
[1]-  Exit 127    nohup -c 'git fetch -p && git pull' < /dev/null >&/dev/null  (wd: ~/cryptopp)
(wd now: ~)
[2]+  Exit 127    nohup -c 'git fetch -p && git pull' < /dev/null >&/dev/null  (wd: ~/openssl)
(wd now: ~)

O script de login realiza o seguinte:

if [ -d "$HOME/cryptopp" ]; then
    cd "$HOME/cryptopp"
    nohup -c 'git fetch -p && git pull' </dev/null &>/dev/null &
fi

if [ -d "$HOME/openssl" ]; then
    cd "$HOME/openssl"
    nohup -c 'git fetch -p && git pull' </dev/null &>/dev/null &
fi

As rotações de redirecionamento extras são devidas a nohup: ignorar a entrada e anexar a saída a 'nohup.out' . As aspas simples extras são devidas a Como escapar de aspas simples dentro de strings entre aspas simples?

Se for importante, estou trabalhando no OS X, então é usando o Bash 3. Mas os scripts geralmente rodam no Linux, BSD e Solaris, e eu também estou vendo no Debian 8.

Eu tenho algumas perguntas. Primeiro, qual é o problema nohup está reclamando? Em segundo lugar, como faço para corrigir o problema nohup está reclamando? Terceiro, como faço para suprimir mensagens como essa?

    
por jww 12.06.2016 / 03:52

1 resposta

6

A saída não vem de nohup , vem do seu shell (bash).

Você baseou esses processos usando & e, portanto, o shell informa quando os comandos são encerrados. Se você não quiser que o shell faça isso, use disown . Além disso, usando disown , você não precisa mais de nohup . Por exemplo:

if [ -d "$HOME/cryptopp" ]; then
    (
        cd "$HOME/cryptopp"
        git fetch -p && git pull
    ) </dev/null &>/dev/null &
    disown $!
fi

No exemplo, geramos um subshell com os redirecionamentos, criamos um plano de fundo e depois o desativa.

    
por 12.06.2016 / 05:21