existe uma maneira de escapar de um processo no bash com desistir dele? [duplicado]

0

Por exemplo, eu digito sudo apt-get update e então uma longa lista de coisas surgirá por minutos.

se eu quiser evitar de ver esta atualização cansativa e assumir o controle da linha de comando bash novamente (sem sair do comando original),

há uma tecla de atalho ou algo assim para fazer isso?

    
por kwagjj 27.08.2014 / 07:32

2 respostas

4

Você pode parar apt-get temporariamente com Ctrl-Z e, em seguida, reiniciar o job em segundo plano com o bg command .

$ apt-get foo bar ...
^Z
bash: suspended apt-get
$ bg
bash: continued apt-get
$

No entanto, quando você fizer isso, você continuará recebendo a saída de apt-get no terminal. Não é possível parar isso depois que você já iniciou o comando (exceto com hacks sujos usando um depurador). Você pode executar outros comandos aqui, no entanto. Enquanto o trabalho está parado, ele ainda está ativo, mas não está em execução, por isso não fará nenhum progresso, mas você também não verá nenhuma saída.

O que você pode achar útil é o screen ou tmux . Eles permitem que você execute várias sessões com diferentes terminais dentro do mesmo terminal físico. Se você estiver usando o X, poderá executar emuladores de terminal adicionais ou talvez criar uma nova guia na sua atual. Seja qual for o caminho, você pode executar apt-get update em um shell e depois alternar para outro para continuar trabalhando.

    
por 27.08.2014 / 07:41
1

Para este comando em particular, você pode geralmente presumir que funcionará sem erros na maioria das vezes. Neste caso, você pode estar melhor apenas executando assim:

  sudo apt-get update > ~/.aptget.update.log &

Você também pode ocultar todas as saídas usando parênteses:

  (sudo apt-get update > ~/.aptget.update.log &)

Isso pode ter um alias com esta linha para torná-la acessível e você pode usar:

  alias apt-update="(sudo apt-get update > ~/.aptget.update.log &)"

Isso permite que você execute o comando usando apenas 'apt-update'. Coloque isso no seu arquivo ~/.bashrc para que ele execute automaticamente cada login.

Você também pode adicionar uma mensagem personalizada para lembrar o que está fazendo:

  alias apt-update="echo \"Running apt-get update in the background. Wait a few moments for it to finish.\" || (sudo apt-get update > ~/.aptget.update.log &)"
    
por 27.08.2014 / 08:56

Tags