Primeiro de tudo, você pode criar um arquivo no seu diretório pessoal chamado .bash_logout
.
Observe o ponto na frente dele. Isso denota arquivos de configuração e eles geralmente não são listados quando você digita ls
, a menos que você adicione a opção -a
.
Primeiro verifique se o seu sistema suporta este arquivo. (por exemplo, pode não fazer nada se você não executar o bash. Você pode estar usando um outro shell, como zsh, sh, pinosh, dc, ...
Testar isso pode ser tão simples quanto fazer um vim ~/.bash_logout
e adicionar uma linha echo This works!
ao final dele. Efetue logout do seu console de texto e verifique se ele ecoa "Isso funciona!" para a tela. Se você estiver usando um ambiente gráfico que fecha um terminal quando efetuar logout dele, colocar outro comando no arquivo .bash_logout pode ser mais conveniente. (Por exemplo, o comando touch bash_logout_last_tiggered
. Isso definirá a data de modificação do arquivo bash_logout_last_tiggered para a hora em que o comando touch foi executado).
Em seguida, leia em nohup . Basicamente, quando você efetua logout de um shell, cada programa que ainda está em execução receberá um sinal dizendo para ele parar. Este sinal é chamado HUP
(hangup). O nome origina a hora em que as pessoas usavam as linhas telefônicas para discar para os servidores. Essas conexões às vezes caíam quando havia barulho na linha. Você então tem a opção de manter programas em execução ou fazer uma limpeza. A escolha feita foi para enviar todos os programas sinal 1, SigHUP. Os programas, em seguida, limpar perfeitamente (por exemplo, um editor de texto salvaria seu arquivo e sair. Um jogo iria salvar e sair, etc etc).
Você pode escrever um programa e permitir que ele intercepte o sighup, caso em que você pode optar por fazer anotações. Ou use o wrapper nohup
para fazer isso para você.
Exemplos:
cd /usr/src/linux ; make bzImage
iniciará a compilação de um novo kernel. Isso é algo que pode levar muito tempo (normalmente horas na era 80486).
Durante todo esse tempo meu terminal está ocupado, mostrando a compilação bem-sucedida de um novo kernel. Eu não posso fazer mais nada.
Agora, se eu adicionar um e comercial ( &
) ao comando, ele será executado em segundo plano.
No entanto, ele ainda receberá o sigHup quando eu sair.
A solução: **nohup** command_here **&**
.
Observe o nohup na frente do comando e oe comercial no final (o que também significa que ele não receberá entrada.
Tudo isso pressupõe que você está executando o bash e que não deseja acionar nada do gerenciador de janelas do KDE. Algo que tenho certeza também é possível (mas que não foi a pergunta feita).