O que é um exemplo prático de usar o comando suspender no Bash?

12

suspend é um comando interno no Bash. Quando você usaria naturalmente esse comando e acharia útil?

    
por igor 29.07.2016 / 08:40

1 resposta

14

Digamos que você não tenha os GNU screen e tmux (e os consoles virtuais X11, e ), mas queira alternar entre um shell de login e outro shell interativo.

Você deve primeiro fazer o login no console e, em seguida, iniciar um novo shell, bloqueando temporariamente o shell de login. Para obter o shell de login de volta para fazer algum trabalho lá, você faria suspend . Então você iria fg para obter o shell interativo de volta para continuar com o que você fez lá.

Na verdade, com o controle de tarefas, o shell de login poderia gerar vários shells interativos como trabalhos em segundo plano para os quais você poderia alternar com fg %1 , fg %2 etc., mas para voltar ao shell de login, precisa usar suspend a menos que você queira manualmente kill -s STOP $$ .

Observe também que Ctrl + Z no prompt em um shell interativo não o suspenderá.

EDITAR: Inicialmente tive uma longa seção hipotética sobre o uso de suspend em um script, mas como o comando requer controle de tarefas e como os shells não interativos geralmente não têm controle de job , Eu deletei essa seção.

Seção excluída com suspend substituído por kill -s STOP $$ (isso realmente não pertence mais à resposta, mas pode ser interessante para os outros de qualquer maneira):

Digamos que você tenha um processo em segundo plano (um script) em um script e que esse processo em segundo plano, em algum momento, precise parar e aguardar o processo pai para que ele continue. Isso poderia ser para que o pai tenha tempo para extrair e mover arquivos ou algo assim.

O script filho suspenderia ( kill -s STOP $$ ) e o script pai enviaria um sinal CONT para ele quando fosse possível continuar.

Ele lhe dá a oportunidade de implementar um tipo de sincronização entre um processo pai e um processo filho (embora seja muito básico, já que o processo de shell pai precisa mais ou menos adivinhar que o processo filho está suspenso, embora isso possa ser corrigido por ter o filho trap CONT e não suspender se esse sinal for recebido muito cedo).

    
por 29.07.2016 / 08:56