Existe uma maneira de colocar o trabalho de primeiro plano em segundo plano com uma ligação de chave?

4

Para colocar o trabalho em primeiro plano, em segundo plano, pressiono cltr + Z e, em seguida, bg [job-number] . Existe uma maneira de fazer isso em um passo em vez de dois, com algum comando cltr + [chave] ?

E não estou falando do & . Eu quero colocar um processo que eu já comecei e estou interagindo com o background.

    
por dan 27.08.2011 / 19:33

1 resposta

2

Você pode pular o número do ID do trabalho: se você omiti-lo, o último trabalho suspenso será removido do ambiente atual. Então cltr + Z e bg é menor.

Se você adicionar isso ao seu .profile ou .bashrc

bind '"\ek"':"\"bg\C-m\""

alt + w deve colocar bg na sua tela e executá-lo para que ele fique em segundo plano.

Exemplo:

rinzwind@discworld:~$ smplayer 
This is SMPlayer v. 0.6.9 (SVN r3447) running on Linux
^Z
[1]+  Stopped                 smplayer
rinzwind@discworld:~$ bind '"\ek"':"\"bg\C-m\""
[1]+ smplayer &

Eu não consegui adicionar um cltr + Z ao comando. Provavelmente devido ao sinal que está sendo ignorado :

  

Ctrl + Z O sinal suspenso envia um SIGTSTP para um programa em execução, parando-o e retornando o controle ao shell.

     

12.1.1.2. Sinais para o seu shell Bash

     

Na ausência de armadilhas, um shell Bash interativo ignora o SIGTERM e o SIGQUIT. SIGINT é capturado e tratado, e se o controle de trabalho estiver ativo, SIGTTIN, SIGTTOU e SIGTSTP também são ignorados. Comandos que são executados como resultado de uma substituição de comando também ignoram esses sinais, quando o teclado é gerado.

     

SIGHUP por padrão sai de um shell. Um shell interativo enviará um SIGHUP para todos os jobs, em execução ou interrompidos; veja a documentação no disown built-in se você quiser desabilitar este comportamento padrão para um processo particular. Use a opção huponexit para matar todos os trabalhos ao receber um sinal SIGHUP, usando o shopt embutido.

    
por Rinzwind 27.08.2011 / 20:52