Autor Tópico: [Resolvido]Como deletar arquivos ao finalizar uma sessão?  (Lida 5589 vezes)

Offline thiaguntu

  • Usuário Ubuntu
  • *
  • Mensagens: 4
    • Ver perfil
[Resolvido]Como deletar arquivos ao finalizar uma sessão?
« Online: 22 de MAR?O de 2012, 19:00 »
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.  :)  
« Última modificação: 23 de MAR?O de 2012, 20:32 por thiaguntu »

Offline raidicar

  • Usuário Ubuntu
  • *
  • Mensagens: 576
  • Quad Shot of Ubuntu
    • Ver perfil
Re: Como deletar arquivos ao finalizar uma sessão?
« Resposta #1 Online: 22 de MAR?O de 2012, 19:25 »
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):
Código: [Selecionar]
0-59/5 * * * *   root    rm -f /diretorio/arquivos3 - reinicie o crontab
Código: [Selecionar]
sudo /etc/init.d/cron restart
obs: se forem varios diretórios, crie um script com todos os rm e o chame pelo crontab:
Código: [Selecionar]
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:
Código: [Selecionar]
#! /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,
« Última modificação: 22 de MAR?O de 2012, 19:37 por raidicar »
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.

Offline fpissarra

  • Usuário Ubuntu
  • *
  • Mensagens: 246
    • Ver perfil
    • Lost in the e-Jungle
Re: Como deletar arquivos ao finalizar uma sessão?
« Resposta #2 Online: 23 de MAR?O de 2012, 00:06 »
Não recomendo mexer no diretório /etc/rc.local. Ao invés disso, crie um script em /etc/init.d:

Código: [Selecionar]
#!/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:

Código: [Selecionar]
$ 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):

Código: [Selecionar]
$ sudo update-rc.d deletefiles defaults 99 99
Repare que seu script será executado sob o domínio do usuário root.

[]s
Fred

Offline thiaguntu

  • Usuário Ubuntu
  • *
  • Mensagens: 4
    • Ver perfil
[Resolvido]Quais maneiras de apagar arquivos automaticamente no Ubuntu?
« Resposta #3 Online: 23 de MAR?O de 2012, 20:27 »
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.
« Última modificação: 23 de MAR?O de 2012, 20:38 por thiaguntu »