Linux 中的启动服务运行了两次

Linux 中的启动服务运行了两次

当我重新启动我的 Ubuntu 10.04 32 位机器时,所有启动服务都会启动两次。

启动过程如下:

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. 

我检查过没有重复的启动链接,如果我这样做update-rc.d -f mysql remove然后重新启动 mysql 根本就不会启动,重新添加它仍然会启动两次。

我的日志中唯一的内容是有关所有事情都重新开始的警告。

有人曾经见过这种情况吗?或者知道从哪里可以找出原因吗?

答案1

我猜测您的系统可能正在经历两个运行级别并在每个运行级别中执行启动脚本。

首先,我会查看/etc/rc2.d、、 - 并删除/etc/rc3.d/etc/rc4.d一个开始符号链接之外的所有符号链接,看看是否有效。

使用“运行级别”命令查看您当前处于什么运行级别。

答案2

发现问题了,我有一个 /etc/init/rc.conf 的重复副本,因此 upstart 运行了 /etc/init.d/rc 两次。

答案3

我在 gentoo 中遇到了这个问题,对我来说,原来是我使用shLinux 上的 shell 在调试模式下在后台运行 flask 应用程序,该软件导致运行了两个 flask 实例。一个解决方案是关闭调试模式,这解决了我的问题。不要急于将问题归咎于 Linux 内部,通常问题出在我们的代码中。简化代码以完成不太复杂的工作,这样您就可以隔离问题。

如果您仍然认为 Linux 操作系统的内核是罪魁祸首,请检查您的启动脚本是否在/etc/runlevels/boot/etc/runlevels/default和目录中重复。您可以检查具有相同名称的文件。如果存在,请删除也位于 中的/etc/init.d文件。/etc/runlevels/default/etc/runlevels/boot

相关内容