Na dica de hoje, vou mostrar como resolver um problema que pode ser um pouco preocupante, para quem trabalha com o
Squid.
O problema, é que quando vamos usar alguma ferramenta do Squid, como por exemplo, recarregar as configurações com o comando
squid -k reconfigure, o resultado será o erro no console:
Squid: ERROR: no running copy
Além disso, outro problema, é que o Squid não aplica as regras que são necessárias, por exemplo, não bloqueia os sites que deveria bloquear.
Como a maioria dos serviços o Squid armazena o PID do seu processo principal (o Squid executa geralmente em dois processos) em um arquivo, que é setado no
squid.conf através do parâmetro
pid_filename, e geralmente fica em
/var/run/squid.pid.
Esse arquivo é atualizado com o PID, sempre que o serviço é iniciado ou reiniciado. O problema é que, em alguns momentos, pode acontecer do Squid ser finalizado incorretamente, seja intencional ou não, e nestes casos, pode acontecer de o arquivo não ser atualizado com o PID atual do processo, deixando o serviço perdido.
Bom, sabendo qual é o problema, você, provavelmente, já pensou na solução (atualizar o arquivo com o PID atual), uma vez que reiniciar o Squid não resolverá o problema, e é isso que vou mostrar aqui.
Para pegarmos o PID do processo atual, devemos rodar o seguinte comando:
ps aux | grep -i squid
A saída será mais ou menos assim:
root 405 0.0 0.0 6028 684 pts/0 S+ 20:53 0:00 grep -i squid
root 2911 0.0 0.0 51700 6340 ? Ss Jan15 0:00 /usr/sbin/squid3 -YC -f /etc/squid3/squid.conf
proxy 23059 0.9 26.8 2278912 2190308 ? R Jan30 79:34 (squid) -YC -f /etc/squid3/squid.conf
O processo que estamos procurando, é o que contém "(squid)" e o PID deste processo é (no nosso exemplo) 23059.
O que precisamos fazer agora, é executar o seguinte comando, lembrando que o caminho abaixo pode variar de acordo com o que está configurado no seu
squid.conf:
# echo num_pid_processo > /var/run/squid.pid
Pronto, agora você terá controle novamente do seu Squid e, para garantir (caso seja possível), vamos reinicia-lo:
# /etc/init.d/squid3 restart
P.S.: em casos mais extremos que a solução acima não se aplica, pare o Squid, remova o arquivo com o PID e inicie o Squid novamente.
É isso... Abraço!
Testado no Debian 7
Veja
essa e outras dicas em
meu blog, onde posto dicas e soluções em TI.
Precisa de suporte técnico ou consultoria? Acesse:
www.revolutech.com.br
Gostou? Compartilhe e deixe seu comentário.
Achou algum erro? Precisa de ajuda? Críticas? Deixe seu comentário.
Obrigado!
Jeferson R. Costa