clean_squid
Publicado por Edson G. de Lima 11/02/2005
[ Hits: 6.491 ]
Se seu squid anda lerdo, às vezes precisa ser reiniciado, ou às vezer fica dando erro de url, então está na hora de você deixá-lo novinho em folha...
Apenas preencha o caminho de seu squid, de seu squid.conf e o seu editor favorito... O script fará o resto!
#!/bin/bash # Altere as 3 primeiras variáveis com seu editor favorito # e com o caminho do Squid e do squid.conf EDITOR=vi SQUID=/usr/sbin/squid CONF=/etc/squid/squid.conf BKPLOG=/root/dir_clean LOGSTART=$BKPLOG/msg-squid.txt HOJE=$(date +%d_%m_%Y) DIRCACHE=$(grep ^cache_dir $CONF | cut -f3 -d' ') ARQCACHE=$(grep ^cache_log $CONF | cut -f2- -d' ') ARQSTORE=$(grep ^cache_store_log $CONF | cut -f2- -d' ') ARQACCESS=$(grep ^cache_access_log $CONF | cut -f2- -d' ') PID=$(grep 'pid_filename /' $CONF | cut -f3- -de | cut -c2-) echo "Este script é uma das funções de um 'script maior' que utilizo para" echo "gerenciar o Squid que administro, caso queira a versão completa" echo "mande um e-mail para Xxoin@yahoo.com.br" echo sleep 5 echo "Antes de prosseguir, certifique-se de que já tenha preenchido todas as" echo "variáveis que contêm o caminho para os arquivos que serão utilizados." echo echo echo "---> Vamos então ao trabalho!" sleep 3 echo echo "Esta função irá fazer uma limpeza do cache e dos arquivos de log," echo "utilize-a se o Squid estiver travando com muita freqüência..." echo "--> Deseja continuar? --> s / n" read s_n if [ $s_n = s ]; then echo echo "Forçando a parada do Squid, aguarde..." killall -9 squid sleep 3 echo echo "Forçando a remoção do PID do Squid..." if [ -e $PID ]; then rm -f $PID else echo "O PID já tinha sido removido... Não requer nenhuma ação." fi echo echo echo "Nossa próxima etapa será 'detonar' os arquivos de log do Squid" echo "Para fins de (possível) auditoria, irei salvar uma cópia de segurança do access.log" if [ ! -d $BKPLOG ]; then echo echo "Vou criar o diretório $BKPLOG para colocar um back-up do access.log" mkdir $BKPLOG else echo echo "Aproveitando seu diretório $BKPLOG..." fi echo echo "Salvando cópia de segurança do seu access.log em $BKPLOG..." echo "Dependendo do tamanho... isto pode demorar um pouco..." cp -f $ARQACCESS $BKPLOG/$HOJE\_access.log echo sleep 3 echo "LIMPANDO os arquivos de log..." cat /dev/null > $ARQCACHE cat /dev/null > $ARQACCESS cat /dev/null > $ARQSTORE echo sleep 3 echo "Removendo os diretórios de cache." rm -rf $DIRCACHE/* echo echo "REcriando os diretórios de cache..." sleep 3 echo $SQUID -z sleep 5 echo "Reiniciando o Squid..." $SQUID echo echo "Aguarde apenas alguns segundos..." sleep 5 echo echo "Mostrando status do Squid (DEVEM aparecer os dois processos básicos" echo "do Squid: processo $SQUID e processo (squid):" echo ps -ax | grep squid echo sleep 5 echo "Listando o -PID- do Squid." echo "Certifique-se de que o PID corresponde ao número do processo" echo "que está com a palavra (squid) entre parêntesis..." echo cat $PID echo echo "Após a finalização, verifique no log gerado, os campos 'exited due to signal x'" echo "e identifique as causas de parada com o comando: man signal" echo "--> Deseja ver o log desta reinicialização? --> s (recomendado) / n" read s_n if [ $s_n = s ]; then cat /var/log/messages | grep squid > $LOGSTART echo >> $LOGSTART cat $ARQCACHE >> $LOGSTART echo >> $LOGSTART echo >> $LOGSTART # Texto que será inserido no final dos logs (no arquivo /root/msg_squid.txt) echo LEIA ISTO: >> $LOGSTART echo ---------- >> $LOGSTART echo >> $LOGSTART echo Se o squid continuar travando após este procedimento faça o seguinte: >> $LOGSTART echo Aplique o comando: killall -9 squid . Depois reinicie o squid em modo debug, nível 9 >> $LOGSTART echo aplicando o comando: squid -d 9 . Assim estaremos depurando os logs... >> $LOGSTART echo Depois abra o arquivo /var/log/squid/cache.log e verifique as mensagens de erro. >> $LOGSTART echo >> $LOGSTART echo >> $LOGSTART # ------------------------------------------------------------------------------ echo echo "Vou abrir as mensagens desta inicialização." echo "Abrindo arquivo $LOGSTART" echo "Veja a NOTA no final do arquivo." sleep 5 $EDITOR $LOGSTART else echo echo "Saindo sem filtrar arquivo com mensagens da reinicialização do Squid." fi else echo "Sainda sem fazer nada." echo "Se você deseja executar este script, utilize a letra s minúscula." fi # =============================================================== ### ------------- Edson de Lima ### --------------------------- Campo Grande/MS, Fev_2005
Implementando um simples manipulador de eventos de teclado
Verificando roteamento em vários servidores Linux
getgazette - script para baixar a Linux Gazette
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Como renomear arquivos de letras maiúsculas para minúsculas
Imprimindo no formato livreto no Linux
Vim - incrementando números em substituição
Efeito "livro" em arquivos PDF
Como resolver o erro no CUPS: Unable to get list of printer drivers
SysAdmin ou DevOps: Qual curso inicial pra essa área? (0)
Melhores Práticas de Nomenclatura: Pastas, Arquivos e Código (3)
[Python] Automação de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas às imagens de uma pasta