Linux Efetuar logoff do script no Pardus

0

Estou tentando executar um script quando o usuário fez logout. Minha distribuição Linux é o Pardus que usa o KDE. Como posso fazer isso?

Já ouvi falar sobre o "/.bash_logout", mas não consegui implementar isso. Onde devo criar o arquivo "/.bash_logout"?

    
por skoroglu 09.07.2013 / 15:46

2 respostas

0

Estou assumindo que você deseja isso por usuário para as seguintes

Existem algumas opções diferentes, mas primeiro para esclarecer um mal-entendido, você menciona "/.bash_logout", mas em todos os lugares que tenho visto sugere ~/.bash_logout .

O ~ é um caminho curto para dizer "a casa deste usuário". Isso significa que você precisa criar o arquivo .bash_logout em /home/USERNAME/.bash_logout .

Outra opção é usar a sugestão do KDE de: /home/USERNAME/.kde4/shutdown/ . Adicione scripts lá e verifique se eles são executáveis ( chmod +x ~/.kde4/shutdown/scriptname.sh ). Se a pasta não existir, basta fazê-lo.

Se você quiser que isso aconteça para todos usuários

Use /usr/shutdown/ .

Nota: Eu não tenho o KDE para testar os detalhes do KDE para você.

    
por 09.07.2013 / 16:06
0

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).

    
por 09.07.2013 / 16:09