De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.
Colaboração: Rubens Queiroz de Almeida
Data de Publicação: 30 de setembro de 2014
No bash, o disown
builtin é usado para remover tarefas da tabela de
processos, ou para para marcar tarefas de forma a que, quando receberem um
sinal SIGHUP, este não seja recebido pelo processo quando a shell pai receber
este sinal. Isto ocorre quando, por exemplo, um usuário encerra sua sessão.
Vejamos mais um exemplo. Você começou uma tarefa complexa em seu notebook, e achou que esta tarefa se encerraria rapidamente. Mas isto não aconteceu e você precisa ir embora. O problema é que, se você encerrar a sua conexão, muito provavelmente a tarefa importante e complexa que você iniciou será também encerrada, com consequencias imprevisíveis.
Com o comando disown
você pode conseguir escapar deste problema.
A primeira coisa a fazer é colocar o processo para rodar em background. Isto
se faz pressionando as teclas <CTRL><z>
e em seguida digitando bg
.
Pronto, o processo está rodando em background, mas você ainda não pode
encerrar a sua sessão. Quando damos o comando bg
o processo recebe
um número, que deve ser usado em seguida para despossuir (disown) o comando.
Reproduzo a seguir uma sequencia completa de comandos ilustrando o uso
do comando diswown
:
$ find . >1 /dev/null ^Z [1]+ Stopped find . /dev/null > 1 $ bg [1]+ find . /dev/null > 1 & $ jobs [1]+ Running find . /dev/null > 1 & $ disown %1 $ jobs $
O comando find
é deliberadamente longo, achar todos os arquivos a partir
do diretório corrente. Em seguida, o processamento é interrompido (<CTRL><z>
)
e o processo passa a rodar em background (bg
). Em seguida, executo o comando
jobs
para ver quais processos estão rodando em segundo plano. Vemos que o
processo continua lá. Em seguida, executo o comando disown %1
. Ao emitir
o comando jobs
novamente, vemos que o processo não mais me pertence.
Posso fechar tudo e ir embora :-)
This policy contains information about your privacy. By posting, you are declaring that you understand this policy:
This policy is subject to change at any time and without notice.
These terms and conditions contain rules about posting comments. By submitting a comment, you are declaring that you agree with these rules:
Failure to comply with these rules may result in being banned from submitting further comments.
These terms and conditions are subject to change at any time and without notice.
Comentários