Como posso impedir que o nohup crie o arquivo ~ / nohup.out?

16

Eu uso o comando $ nohup ...para iniciar um aplicativo em segundo plano para poder fechar a janela do terminal posteriormente.

Após a execução, ele cria o arquivo ~/nohup.out.

Exemplo:

orschiro@x230:~$ nohup /bin/bash -c "sleep 15 && python3 /home/orschiro/bin/show_state.py"
nohup: ignoring input and appending output to 'nohup.out'

Como posso impedir a nohupcriação nohup.out?

orschiro
fonte
2
Você também pode considerar byobu. :)
Andrea Lazzarotto
Obrigado, @AndreaLazzarotto! Você pode me dar um exemplo de como usá-lo?
precisa saber é
2
Bem, sugiro que você dê uma olhada no vídeo aqui: byobu.co Basicamente, para o que você quer fazer, basta executar byobu, iniciar o que quiser, pressionar F6e pronto. Você pode voltar a executar executando byobunovamente.
Andrea Lazzarotto
Excelente! Você pode querer adicionar isso como uma resposta oficial?
orschiro 01/09/16
Tecnicamente, minha sugestão não responde à sua pergunta, é apenas uma alternativa. : D
Andrea Lazzarotto

Respostas:

20

Você pode redirecionar a saída para onde quiser, por exemplo:

nohup /bin/bash -c "sleep 15 && python3 /home/orschiro/bin/show_state.py" >/dev/null 2>&1

o redirecionamento impede que o arquivo de saída padrão nohup.outseja criado. /dev/nullé esquecimento; portanto, se você não deseja os dados, envie-os para lá.

No bash, você pode abreviar >/dev/null 2>&1para&>/dev/null

Para programas que uso com frequência, faço um alias (e o adiciono ao meu .bashrc) por exemplo

alias show_state='nohup /bin/bash -c "sleep 15 && python3 /home/orschiro/bin/show_state.py" >/dev/null 2>&1'

Agora tudo que eu tenho que digitar é show_state

Zanna
fonte
2
@orschiro: Depois de alguns anos, não será enigmático e você se lembrará disso;) Sugiro continuar, porque aliasing significa que você não ganhará essa experiência e saberá como os operadores de redirecionamento BASH funcionam de cima para baixo da sua cabeça é uma habilidade crucial.
Lightness Races com Monica
Isso não seria melhor em função? Algo como show_state () { /bin/bash -c "$@" &>/dev/null }? (Aviso: sintaxe ruim e provavelmente não funcionará! É apenas um exemplo!). Um detalhe: por que show_statequando você está jogando fora a saída de nohup?
Ismael Miguel
Não sei o que o script faz @IsmaelMiguel, mas presumo que seja um indicador com um ícone de bandeja, para não imprimir "state" (seja o que for) no stdout. Claro, uma função pode muito bem ser mais divertido do que um alias ^ ^.
Zanna
Ah, entendi! Desculpe, não vi o nome do .pyarquivo. E sim, uma função é mais divertida. Eu tenho essa função mal escrito em um desktop Debian: shutup() { source "$@" >/dev/null 2>&1 & }. E isso funciona. Talvez você possa sugerir algo semelhante, mas muito melhor?
Ismael Miguel
Eu nunca soube que &>funcionou (e, na minha opinião, parece um plano de fundo mais um redirecionamento stdout). Eu sempre aprendi isso como >&. Isso é padrão?
precisa saber é o seguinte