clean_squid
Publicado por Edson G. de Lima 11/02/2005
[ Hits: 6.624 ]
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
SabATT - Facilitador de atualização (Equo - Sabayon)
Shell Script para Linux HOWTOs
Acessar celular Motorola via USB
copy - copiar para a área de transferência
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Meu Fork do Plugin de Integração do CVS para o KDevelop
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
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
Cups: Mapear/listar todas as impressoras de outro Servidor CUPS de forma rápida e fácil
Criando uma VPC na AWS via CLI
Tem como instalar o gerenciador AMD Adrenalin no Ubuntu 24.04? (14)
Tenho dois Link's ( IP VÁLIDOS ), estou tentando fazer o failover... (0)
Pendrive não formata de jeito nenhum (4)