Eu tenho um monte de usuários indisciplinados com contas de email em um servidor meu. Eles nunca esvaziam sua lixeira ou pastas de lixo eletrônico e o número de arquivos sobe até o infinito.
Estou criando um script Bash para apagar esses arquivos periodicamente usando o cron.
Eu fiz isso:
- crie um arquivo txt com uma lista de diretórios que eu quero apagar;
- crie um script que leia linha por linha, todo diretório e apague tudo,
cur
enew
.
Exemplo de arquivo txt:
~/mail/.Junk/cur
~/mail/.Junk/new
~/mail/.Trash/cur
~/mail/. Trash/new
~/mail/.administrative@example.com/.Junk/cur
~/mail/.administrative@example.com/.Junk/new
~/mail/.administrative@example.com/.Trash/cur
~/mail/.administrative@example.com/.Trash/new
~/mail/.finance@example.com/.Junk/cur
~/mail/. finance@example.com/.Junk/new
~/mail/. finance@example.com/.Trash/cur
~/mail/. finance@example.com/.Trash/new
Estou na primeira fase da criação do script, onde testo se consigo acessar os diretórios e listar seus conteúdos.
Então eu tenho esse script:
#!/bin/bash
while read line
do
ls $line
done < ~/directories.txt
Quando executo o script, recebo o seguinte erro:
ls: não pode acessar ~/mail/.administrative@example.com/.Junk/new/: Não tal arquivo ou diretório
para todos os diretórios, mas se eu digitar
ls ~/mail/.administrative@example.com/.Junk/new/
Funciona bem.
porque?
~
caminho no script para ver se você está no lugar certo e talvez você precise usar o caminho absoluto de sua casa em vez do ~
~
aponta para um diretório home diferente (provavelmente/root
). use caminhos completos e garanta que o root tenha acesso às pastas e ao conteúdo.