在 13.04 版中,upstart 的行为有变化吗

在 13.04 版中,upstart 的行为有变化吗

我有一个 upstart conf,它在启动时挂载远程 nfs。以前(在 12.10 中)它使用

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

在 13.04 中这不再起作用 - 我尝试了您能想到的所有变体,例如运行级别、IFACE=!lo 等等。

为了使其在 13.04 上运行,我改回了原来的,但在挂载之前start on使用了带有的脚本- 这有效。sleep 10

13.04 中是否有影响此行为的变化?

答案1

首先,它应该是“IFACE!=lo”而不是“IFACE=!lo”,但我认为这是你问题中的拼写错误。

话虽如此,我遇到了完全相同的问题,甚至尝试了运行 13.04 的不同机器,问题也重现了。但从我收集的信息来看,Upstart 1.8 没有任何变化。

我发现,当'net-device-up IFACE=*'在我编写的复杂 upstart 作业中根本不起作用,如果我把它放在简单的作业中它就会起作用,例如:

# /etc/init/debug.conf
start on (local-filesystems and net-device-up IFACE!=lo)
script
  exec 1>>/tmp/log.file
  echo "$0:$$:`date`: got called. Environment of job $JOB was:"
  env
  echo
end script

所以,显然这里还有其他事情发生。我正在阅读 /var/log/syslog 和 /var/log/kern.log 日志,但尚未找出罪魁祸首。

我的解决方案(针对另一个复杂的工作)是省去界面,只写:

start on (local-filesystems and net-device-up)

这很完美。但是这对我来说还不够好,因为我的脚本将在具有多个接口的机器上运行。如果我找到比我的解决方法或您的解决方法更好的解决方案,我会更新此答案。

答案2

在启动时挂载远程 NFS 的适当方法是将其放入/etc/fstab

server:/export /mount/point nfs nobootwait,nfsvers=4

此行将在启动时从‘服务器’挂载‘/export’,但不会阻碍启动过程。每一个网络设备启动时,若尚未安装,mountall则会尝试再次安装。

相关内容