Porta em Uso
Porta em Uso (EADDRINUSE)
Descrição do Problema
Ao iniciar o gateway, você recebe erro indicando que a porta já está em uso:
Error: listen EADDRINUSE: address already in use :::3000
Error: Port 3000 is already in use
bind: Address already in use
Possíveis Causas
- Instância anterior rodando - Gateway não foi parado corretamente
- Outro serviço na porta - Nginx, Apache, outro app
- Processo zumbi - Processo travado ocupando a porta
- Container Docker - Container antigo ainda rodando
Soluções
1. Identificar o Processo
# Ver qual processo está na porta 3000
lsof -i :3000
# Alternativa com netstat
netstat -tulpn | grep 3000
# Alternativa com ss
ss -tulpn | grep 3000
2. Matar o Processo
# Matar por PID (substitua pelo número real)
kill -9 <PID>
# Matar processos do clawdbot
pkill -f clawdbot
# Matar processo na porta específica
fuser -k 3000/tcp
3. Usar Outra Porta
# Iniciar em porta diferente
clawdbot gateway start --port 3001
# Ou configurar no arquivo
# ~/.clawdbot/config.yaml
gateway:
port: 3001
4. Verificar Containers Docker
# Listar containers
docker ps -a | grep clawdbot
# Parar container
docker stop <container_id>
# Remover container parado
docker rm <container_id>
5. Parar Outros Serviços
# Parar Nginx
sudo systemctl stop nginx
# Parar Apache
sudo systemctl stop apache2
# Verificar o que está rodando
sudo systemctl list-units --type=service --state=running
6. Limpar Processos Zumbis
# Encontrar processos zumbis
ps aux | grep -w Z
# Ver processos do node
ps aux | grep node
# Matar todos os processos node (cuidado!)
killall node
Script de Diagnóstico
#!/bin/bash
PORT=${1:-3000}
echo "Verificando porta $PORT..."
# Verificar se está em uso
if lsof -i :$PORT > /dev/null 2>&1; then
echo "Porta $PORT está em uso!"
echo ""
echo "Processo:"
lsof -i :$PORT
echo ""
read -p "Deseja matar o processo? (s/n) " -n 1 -r
echo
if [[ $REPLY =~ ^[Ss]$ ]]; then
fuser -k $PORT/tcp
echo "Processo finalizado!"
fi
else
echo "Porta $PORT está livre!"
fi
Problemas Relacionados
Prevenção
- Sempre pare o gateway corretamente com
clawdbot gateway stop - Use portas diferentes para cada serviço
- Configure healthchecks para detectar processos travados
- Use process managers como PM2 ou systemd