我有一台 Ubuntu Server 12.04 机器,用作家庭文件服务器。有时,我希望能够关闭所有常规网络服务(nfs-kernel-server 及其相关服务、netatalk、nmbd、smbd、backuppc、subsonic 和 transmission-daemon),而不关闭 sshd。我还希望能够在不启动所有这些服务的情况下启动机器,但和sshd 正在运行。
在 upstart 之前,这很简单。将默认运行级别设置为 3。将上述网络服务设置为在运行级别 3-5 启动,但不是在 2。让 sshd 从 2-5 开始。然后,要关闭除 sshd 之外的所有服务,请运行telinit 2
。或者要在不启动所有这些服务的情况下启动,请附加3
到内核命令行。
但是,其中一些服务(idmapd、statd、rpcbind、nmbd 和 smbd)已转换为 upstart 作业。作为测试,我尝试将其添加and runlevel [345]
到 smbd 和 nmbd 的启动条件中,但似乎没有任何效果:
start on (local-filesystems and net-device-up and runlevel [345])
stop on runlevel [!345]
我遗漏了什么?如何让这些 upstart 作业响应运行级别的更改?