Encontrado o problema, eu tinha uma cópia duplicada do /etc/init/rc.conf, então o upstart estava rodando o /etc/init.d/rc duas vezes.
Quando eu reinicio minha máquina Ubuntu 10.04 de 32 bits, todos os serviços de inicialização são iniciados duas vezes.
O processo de inicialização é assim:
Starting apache2
Starting apache2
(98)Address already in use: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
Unable to open logs
Done
Done
* Starting MySQL database server mysqld * Starting MySQL database[ OK ] * Starting nsd3... * Starting nsd3...
[ OK ]
* Starting Postfix Mail Transport Agent postfix * Starting Postfi[ OK ] Transport Agent postfix
[ OK ]
* Starting NTP server ntpd * Starting NTP server ntpd [ OK ]
Starting daemon monitor: monit.
Eu verifiquei que eu não tenho links de inicialização duplicados, se eu fizer um update-rc.d -f mysql remove
, em seguida, reiniciar o mysql não inicia de todo, adicionando novamente ele ainda faz é iniciar duas vezes.
As únicas coisas nos meus logs são avisos sobre tudo começando duas vezes.
Alguém já viu isso antes ou tem uma pista de onde investigar o que está causando isso?
Eu acho que seu sistema está possivelmente passando por dois runlevels e executando os scripts de início em cada um deles.
Primeiro, analise /etc/rc2.d
, /etc/rc3.d
, /etc/rc4.d
- e remova todos os links simbólicos, exceto um, e veja se isso funciona.
Use o comando "runlevel" para ver em que nível de execução você está atualmente.
Eu tive esse problema no gentoo, para mim o que aconteceu foi que eu estava usando o sh
shell no linux para executar um aplicativo de balão em segundo plano no modo de depuração, que o software estava causando duas instâncias de balão para ser executado. Uma solução foi desativar o modo de depuração que resolveu meu problema. Seja lento para acusar o interior do Linux do problema, muitas vezes o problema está no nosso código. Simplifique seu código para fazer um trabalho menos complicado e você pode isolar o problema.
Se você ainda acha que a coragem do sistema operacional Linux é a culpa, verifique se você não tem seus scripts de inicialização duplicados nos diretórios /etc/runlevels/boot
, /etc/runlevels/default
e /etc/init.d
. Você pode verificar arquivos com os mesmos nomes. Se eles existirem, mova os de /etc/runlevels/default
que também estão em /etc/runlevels/boot
.