Executando comandos do Linux em segundo plano: E comercial (&) ou tela

3

A execução de um aplicativo em segundo plano pode ser feita adicionando-se e comercial ("&") no final do aplicativo ou via tela (abrindo uma sessão de tela) se o aplicativo precisar de entrada agora e depois.

Existe algum outro benefício além do acima (adicionando entrada para o aplicativo)?

Estou curioso para saber se há algum benefício de uma perspectiva de detalhes de baixo nível - por exemplo, presumo que as alterações para o aplicativo ser encerrado pelo kernel sejam um pouco pequenas se forem executadas via tela, em vez de com & no final.

    
por Bogdan Ciocoiu 16.10.2012 / 12:23

2 respostas

4

Usar & fará com que o programa seja executado em segundo plano e espere se precisar de entrada. O que o torna útil somente para programas que não precisam de entrada.

O programa também terminará se você sair, a menos que você use o comando nohup . Isso irá capturar o sinal 1 (HangUP) e gravar todas as saídas em um arquivo.

Se você precisar dar entrada agora e depois, há três opções:

  1. Traga manualmente o programa para o primeiro plano usando fg .
    Ou fg jobnumber . (Veja jobs ). Desvantagens: 1) Trabalho extra 2) Como você sabe que está esperando por entrada, a menos que você se afaste? -F nohup.out?
  2. Use a tela.
  3. Use o tmux.
por 16.10.2012 / 15:13
4

Se você executá-lo na tela, poderá fechar seu terminal e ele ainda estará em execução.

Se você executá-lo via "&" o aplicativo recebe um comando HUP, fazendo com que ele seja encerrado, se você fechar seu terminal atual.

Você pode combiná-lo com nohup:

nohup /bin/mycommand &

para continuar funcionando.

    
por 16.10.2012 / 12:51