是什么导致“smbd”在启动时停止运行?

是什么导致“smbd”在启动时停止运行?

最近,我的 samba 服务器 (Ubuntu 10.04 LTS am64) 遇到了一个奇怪的问题,所有共享都“突然”无法供客户端访问。跟踪错误后发现,smbd启动时未启动该共享。来自系统日志:

[...]
Dec  4 12:28:45 takkat-home dhclient: 
Dec  4 12:28:45 takkat-home NetworkManager: <info>  DHCP: device eth0 state changed (null) -> preinit
Dec  4 12:28:45 takkat-home init: smbd main process (1027) terminated with status 255
Dec  4 12:28:45 takkat-home init: smbd main process ended, respawning
Dec  4 12:28:45 takkat-home dhclient: Listening on LPF/eth0/00:24:1d:25:40:e4
Dec  4 12:28:45 takkat-home dhclient: Sending on   LPF/eth0/00:24:1d:25:40:e4
Dec  4 12:28:45 takkat-home dhclient: Sending on   Socket/fallback
Dec  4 12:28:45 takkat-home avahi-daemon[917]: No service file found in /etc/avahi/services.
Dec  4 12:28:45 takkat-home init: smbd main process (1045) terminated with status 255
Dec  4 12:28:45 takkat-home init: smbd main process ended, respawning
Dec  4 12:28:45 takkat-home init: smbd main process (1050) terminated with status 255
Dec  4 12:28:45 takkat-home init: smbd main process ended, respawning
[...]

和 smbd.log:

[...]
[2010/12/04 12:28:45,  0] smbd/server.c:1069(main)
  smbd version 3.4.7 started.
  Copyright Andrew Tridgell and the Samba Team 1992-2009
[2010/12/04 12:28:45,  0] printing/print_cups.c:103(cups_connect)
  Unable to connect to CUPS server localhost:631 - Connection refused
[2010/12/04 12:28:45,  0] printing/print_cups.c:103(cups_connect)
  Unable to connect to CUPS server localhost:631 - Connection refused
[2010/12/04 12:28:45,  0] smbd/server.c:1115(main)
  standard input is not a socket, assuming -D option
[2010/12/04 12:28:45,  0] passdb/pdb_interface.c:253(guest_user_info)
  guest_user_info: Unable to locate guest account [guest]!
[2010/12/04 12:28:45,  0] smbd/server.c:1201(main)
  ERROR: failed to setup guest info.
[2010/12/04 12:28:45,  0] smbd/server.c:1069(main)
  smbd version 3.4.7 started.
  Copyright Andrew Tridgell and the Samba Team 1992-2009
[...]

很明显 smbd 崩溃了。

在此之前,我没有对 Samba 配置进行任何更改,除了安全更新之外没有安装任何东西,也没有创建或删除任何新用户。今天,我只需运行以下命令,就可以修复所有问题并正常运行

sudo smbd restart

启动时崩溃的问题已消失并且客户端可以再次使用共享。

不过,我不知道哪个进程导致了这种行为,我担心将来如何避免这种情况。任何关于哪个进程可能导致 smbd 崩溃的想法都将不胜感激。此外,我很想知道重新启动 smbd 可能修复什么问题,以及这样做是否是一个好主意。

答案1

要小心,如果您有多个网卡,samba 甚至可能不会尝试启动(sys.log 中没有 smbd 的踪迹),因为它等待错误的网络接口启动。

  1. 检查ifconfig以找到您想要使用的接口。
  2. 然后检查/etc/samba/smb.confsamba 是否使用了正确的接口
  3. 然后检查/etc/config/smbd.conf在启动 samba 之前是否等待正确的接口启动。例如,下面的行仅在 eth0 接口启动时才启动 smbd:

start on (local-filesystems and net-device-up IFACE=eth0 and started udev-finish)

答案2

如果确实是时间问题,那么可能意味着 smbd 启动前所需的某些东西(我猜是网络服务)没有及时发生。启动后可以毫无问题地启动它,这意味着您可能只需将其设置为非常低的启动优先级(即在最后,因为它似乎不依赖于任何其他服务)。

您可以使用 update-rc.d 脚本执行此操作。

了解一些背景知识,请查看 /etc/rc2.d(或 /etc/rc2.d 至 /etc/rc5.d 中的任何一个),这些服务设置为在系统进入运行级别 2 - 5 时自动启动(在本练习中,我们假设它们是相同的)。您可能会注意到有一个S20MBD这意味着自动启动 smbd(启动脚本的链接/etc/init.d/smbd) 的优先级为 20,其中低优先级的事物将首先启动,直到运行级别目录中的所有内容都已处理完毕。

通常,用户级别启动会使用低优先级(最后启动)99,因此从 update-rc.d 文档中,我们将使用 98:

  • update-rc.d smbd 默认值 98 02

这只是意味着将默认运行级别(2-5)的 smbd 自动启动更新为优先级 98,因此它几乎是最后启动的(取决于您的系统如何设置)。

答案3

我快速浏览了一下网络,发现问题可能是权限问题或时间问题。例如,我运行 docky,通常登录后会弹出一条通知,提示 compiz 未启用,某些功能无法启用,但实际出现时 compiz 已经启动,docky 也一切正常。如果 compiz 尚未启动,Docky 可以恢复到更基本的形式。但是 AWN(avant window navigator)不会这样做,如果 compiz 不存在,即使它设法在稍后的“日期”让它启动,它也不会加载。虽然我的所有胡言乱语都是关于可视化 GUI 元素的,但该理论也适用于服务程序。一个可能的解决方案是使用脚本检查 smbd 服务是否成功运行,如果未运行,则尝试重新启动它。

希望这能有所帮助,或者至少给你一个想法。

答案4

我遇到了同样的问题。我在阅读有关在公司服务器上安装 sendmail 的指南时找到了解决方案。

安装软件包系统配置信息sysvinit 实用程序通过在终端中输入以下内容。

sudo apt-get install sysv-rc-conf sysvinit-utils

然后输入此命令来配置你的系统(Ubuntu 10.04)以加载纳米比亚启动时:

sudo sysv-rc-conf nmbd on

相关内容