[Resolvido]Como deletar arquivos ao finalizar uma sessão?

Iniciado por thiaguntu, 22 de Março de 2012, 19:00

tópico anterior - próximo tópico

thiaguntu

Olá prezados amigos,  

Estou precisando de um Script que faça com que os arquivos de um diretório sejam deletados toda vez que se inicia ou finaliza uma sessão. Pode ser também toda vez que minha máquina for reiniciada. Ou até mesmo em um determinado período em minutos ou segundos após a criação desses arquivos.

A pasta raíz dos arquivos que pretendo apagar se chama "thumbnails" e se encontra na minha pasta de usuário: /home/"minha conta"/.thumbnails. Ela está oculta, porém sem privilégios de usuário root. Quero apagar tudo que tem dentro dela. São miniaturas de imagens e vídeos que são geradas pelo sistema.

A única maneira que encontrei após pesquisar muito na internet, foi criando um Script que fizesse com que os arquivos fossem deletados apenas em um determinado período de dias. No entanto, não quero que esses arquivos fiquem nem se quer um dia dentro da pasta.



Agradeço a atenção de todos.  :)  

raidicar

#1
Para determinar um espaço de tempo em minutos para executar um comando, utilize o crontab para agendar a tarefa.

Opção 1 - A melhor opção:
1 - Como root edite o arquivo /etc/crontab (sudo gedit /etc/crontab caso use ubuntu).
2 - insira a linha que, no caso, executará o comando de 5 em 5 minutos, todos os dias (0-59/5 * * * * significa executar todo dia, a cada 5 minutos):
0-59/5 * * * *   root    rm -f /diretorio/arquivos
3 - reinicie o crontab
sudo /etc/init.d/cron restart

obs: se forem varios diretórios, crie um script com todos os rm e o chame pelo crontab:
0-59/5 * * * *   root    /diretorio/meu_script.sh
/diretorio/meu_script.sh é o caminho de onde se encontra o script.
Pesquise no google sobre o crontab para aprender mais.


Opção 2:
1 - Crie um script com os comandos para remover.
2 - Coloque o caminho correto do script no final do arquivo /home/usuário/.profile
3 - Quando o usuário fizer login, o script será executado e os arquivos serão excluídos (desde que ele tenha permissão para remove-los).


Opção 3:
1 - Crie um script com os comandos para remover.
2 - Coloque o caminho correto do script no final do arquivo /etc/rc.local
3 - Quando o computador iniciar, o script será executado e os arquivos serão excluídos.


Para criar um script:
1 - abra o editor de texto e insira:
#! /bin/bash
rm -f /diretorio1/arquivos
rm -f /diretorio2/arquivos

Insira todos os rm que precisa.
2- salve o arquivo com o nome meuscript.sh e depois, pelo terminal, vá até a pasta do arquivo meuscript.sh e digite no terminal chmod +x meuscript.sh


Att,
Quem ama extremamente, deixa de viver em si e vive no que ama. Na vida três coisas são certas, o amor, a morte e o Linux !
Se Platão disse, então realmente sofremos de uma perigosa doença mental.

fpissarra

Não recomendo mexer no diretório /etc/rc.local. Ao invés disso, crie um script em /etc/init.d:


#!/bin/bash

#Essa aqui é o script "deletefiles"

case "$1" in
  start)
  ;;

  stop)
    # seus comandos de remoção aqui...
    rm -rf ...
    rm -rf ...
    ;;
esac


E depois execute os seguintes comandos:

$ sudo chmod +x /etc/init.d/deletefiles
$ sudo update-rc.d deletefiles defaults


Você ainda pode dar prioridade para o script (quanto maior o número, mais tarde será executado... ou seja, será um dos últimos a ser chamado (tanto na inicialização quanto no shutdown):

$ sudo update-rc.d deletefiles defaults 99 99

Repare que seu script será executado sob o domínio do usuário root.

[]s
Fred

thiaguntu

#3
Consegui!  :D

Testei as opções 2 e 3 postadas pelo raidicar e deram certo. Vou usar a 3 mesmo usando o rc.local até pegar mais o jeito no crontab. Acredito que também dará certo.

Bom, eu gostaria mesmo é de fazer o script rodar durante o logoff ou desligamento da máquina, e não durante o processo de boot, mas não tem problema, tanto faz.

Aproveitarei essas dicas para apagar também os documentos recentes do KDE e outras coisinhas mais. A dica do fpissarra também me poderá ser útil futuramente.

Agradeço a vocês.

Obs: Troquei o título para um mais adequado.