我的 Debian 7 / Apache 2.2 出现了一个问题
我无法关闭我的接口 eth0(服务器超时,我需要重新启动它)
当我进行 strace 操作时,我看到一个 SIGCHILD :
strace -e open ifdown eth0
open("/etc/ld.so.cache", O_RDONLY) = 3
open("/lib/x86_64-linux-gnu/libc.so.6", O_RDONLY) = 3
open("/etc/network/interfaces", O_RDONLY) = 3
open("/run/network/ifstate", O_RDWR|O_CREAT|O_APPEND, 0666) = 3
open("/run/network/ifstate", O_RDWR|O_CREAT|O_APPEND, 0666) = 3
open("/run/network/.ifstate.tmp", O_WRONLY|O_CREAT|O_TRUNC, 0666) = 4
open("/run/network/ifdown-eth0.pid", O_WRONLY|O_CREAT|O_TRUNC, 0666) = 3
open("/run/network/ifup-eth0.pid", O_RDONLY) = -1 ENOENT (No such file or directory)
--- SIGCHLD (Child exited) @ 0 (0) ---
我的 ifconfig:
eth0 Link encap:Ethernet HWaddr 02:00:97:50:85:77
inet adr:151.80.133.119 Bcast:151.80.133.255 Masque:255.255.255.0
adr inet6: fe80::97ff:fe50:8577/64 Scope:Lien
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:7887 errors:0 dropped:0 overruns:0 frame:0
TX packets:3127 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:1000
RX bytes:682530 (666.5 KiB) TX bytes:260205 (254.1 KiB)
eth0:0 Link encap:Ethernet HWaddr 02:00:97:50:85:77
inet adr:37.187.234.165 Bcast:37.187.234.165 Masque:255.255.255.255
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
eth0:1 Link encap:Ethernet HWaddr 02:00:97:50:85:77
inet adr:37.187.234.166 Bcast:37.187.234.166 Masque:255.255.255.255
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
lo Link encap:Boucle locale
inet adr:127.0.0.1 Masque:255.0.0.0
adr inet6: ::1/128 Scope:Hôte
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:6 errors:0 dropped:0 overruns:0 frame:0
TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:0
RX bytes:300 (300.0 B) TX bytes:300 (300.0 B)
我的 etc/network/interfaces 文件:
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 151.80.133.119
netmask 255.255.255.0
gateway 151.80.133.254
post-up /sbin/ifconfig eth0:0 37.187.234.165 netmask 255.255.255.255 broadcast 37.187.234.165
post-down /sbin/ifconfig eth0:0 down
当我重新启动服务器时,我遇到了另一个奇怪的问题,我总是遇到:
(98)Address already in use: make_sock: could not bind to address [::]:80
(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
Action 'start' failed.
所以我需要:netstat -ltnp | grep ':80' 并终止该进程。
我认为这些问题是相关的...但我不知道该怎么办。
有人有想法吗?谢谢
答案1
我无法关闭我的接口 eth0(服务器超时,我需要重新启动它)
关闭一个接口将会完全禁用它,包括任何子接口(例如eth0:0
和eth0:1
您的服务器上的) - 就像您将网线从机器中拔出一样。ifdown
正在正确地执行其工作,但您无法看到它完成,因为服务器不再与您通信!
不要ifdown
在用于连接机器的接口上运行。
答案2
运行时,netstat -ltnp | grep ':80'
它应该会显示该端口上运行的进程。找出该进程是什么,然后删除在启动时初始化它的进程。
或者在 Apache 中,您是否配置了多个监听指令来绑定到同一个端口?grep Listen /etc/apache2/ports.conf
——应该只列出一个端口 80。
答案3
这只是猜测,但您可能正在尝试运行 nginx 和 apache。我怀疑是 nginx,因为我看到 eth0 上有两个虚拟端口和 IP。此外,您收到的有关已使用端口 80 的错误也指向这一点。
如果是这种情况,请禁用或卸载其中一个。