我有一个 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
则会尝试再次安装。