Como excluir automaticamente as pastas /tmp no Linux? Script Bash de limpeza automática de log de disco
Publicados: 2014-03-13
Aqui está um script simples que executará a limpeza automática de log de disco para qualquer ambiente Linux. Você só precisa fornecer CRUNCHIFY_TMP_DIRS correto. Quando um disco não tem mais espaço livre, todos os tipos de problemas podem ocorrer.
Mas antes disso vamos ter um entendimento básico de alguns comandos importantes.
Passo 1)
Verifique o comando df -H.
Use o comando df
para exibir informações sobre o espaço total e o espaço disponível em um sistema de arquivos.
O parâmetro FileSystem especifica o nome do dispositivo no qual o sistema de arquivos reside, o diretório no qual o sistema de arquivos está montado ou o nome do caminho relativo de um sistema de arquivos.
Se você não especificar o parâmetro FileSystem, o df command
exibirá informações para todos os sistemas de arquivos montados no momento. Se um arquivo ou diretório for especificado, o comando df exibirá informações sobre o sistema de arquivos no qual ele reside.
Saída:
1 2 3 |
Filesystem Size Used Avail Capacity iused ifree % iused Mounted on / dev / disk0s2 499G 114G 385G 23 % 27868719 94059510 23 % / devfs 189k 189k 0B 100 % 640 0 100 % / dev |
Passo 2)
Em seguida, filtre o sistema de arquivos e descubra a porcentagem de espaço
1 |
df - H | grep - vE '^Filesystem|tmpfs|cdrom' | awk '{ print $5 " " $1 }' |
Saída:
1 2 |
23 % / dev / disk0s2 100 % devfs |
Portanto, às vezes, programaticamente, você pode querer limpar arquivos de pastas específicas caso fique sem espaço. Nesse caso, você só precisa executar o script abaixo e ele se encarregará de limpar todos os arquivos não utilizados com base nos critérios de filtro mencionados no script. Ele também envia um e-mail para o usuário especificado no script.
Outro deve ler:
- Como executar comandos do Windows/Mac em JAVA e retornar o resultado do texto
Script completo do Linux DiskCleanup:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
#!/bin/bash # Diskclean-Linux.sh - Remove unused files from /tmp directories # @author: Crunchify.com # ------------- Here are Default Configuration -------------------- # CRUNCHIFY_TMP_DIRS - List of directories to search # DEFAULT_FILE_AGE - # days ago (rounded up) that file was last accessed # DEFAULT_LINK_AGE - # days ago (rounded up) that symlink was last accessed # DEFAULT_SOCK_AGE - # days ago (rounded up) that socket was last accessed CRUNCHIFY_TMP_DIRS = "/tmp /var/tmp /usr/src/tmp /mnt/tmp" DEFAULT_FILE_AGE =+ 2 DEFAULT_LINK_AGE =+ 2 DEFAULT_SOCK_AGE =+ 2 # Make EMPTYFILES true to delete zero-length files EMPTYFILES = false #EMPTYFILES=true cd / tmp / log "cleantmp.sh[$] - Begin cleaning tmp directories" echo "" echo "delete any tmp files that are more than 2 days old" / usr / bin / find $ CRUNCHIFY_TMP_DIRS \ - depth \ - type f - a - ctime $ DEFAULT_FILE_AGE \ - print - delete echo "" echo "delete any old tmp symlinks" / usr / bin / find $ CRUNCHIFY_TMP_DIRS \ - depth \ - type l - a - ctime $ DEFAULT_LINK_AGE \ - print - delete echo "" if / usr / bin / $ EMPTYFILES ; then echo "delete any empty files" / usr / bin / find $ CRUNCHIFY_TMP_DIRS \ - depth \ - type f - a - empty \ - print - delete fi echo "Delete any old Unix sockets" / usr / bin / find $ CRUNCHIFY_TMP_DIRS \ - depth \ - type s - a - ctime $ DEFAULT_SOCK_AGE - a - size 0 \ - print - delete echo "" echo "delete any empty directories (other than lost+found)" / usr / bin / find $ CRUNCHIFY_TMP_DIRS \ - depth - mindepth 1 \ - type d - a - empty - a ! - name 'lost+found' \ - print - delete echo "" / usr / bin / logger "cleantmp.sh[$] - Done cleaning tmp directories" # send out an email about diskcleanup action mail - s "Disk cleanup has been performed successfully." you @ email .com echo "" echo "Diskcleanup Script Successfully Executed" exit 0 |
Espero que isto ajude. Se você tiver alguma dúvida sobre o script acima, me avise. Quaisquer sugestões são muito bem vindas. O script funciona em Linux e Mac OS X.

Quer executar o script acima a every 3 days
? Basta usar a programação abaixo do cron
O tutorial detalhado sobre Setting up CronJobs
está a caminho. Por favor fique atento.
1 |
0 0 */ 3 * * / opt / crunchify / crunchify_script . sh |