我可以使用 Upstart 的替代品吗?

我可以使用 Upstart 的替代品吗?

你好,我可以在 ub 12.04 下使用旧式初始化脚本吗?我对 upstart 脚本的间歇性运行感到厌烦。

我有一个依赖于 cifs 挂载(在 fstab 中定义)的进程。我尝试了 upstart 中所有常用的“等待接口”和“等待本地文件系统”依赖项,但似乎没有任何效果。我的命令在 cmd 行上运行良好。

我认为发生的情况是,在 upstart 脚本尝试运行时,cifs 尚未安装。在我看来,Upstart 似乎有问题。


start on (local-filesystems and net-device-up IFACE=eth0 and mounted MOUNTPOINT=/storage/server)
stop on shutdown

expect daemon

script
cd /storage/server/scripts/myprog
su -c "/home/gurpal2000/ruby-1.9.3-p0/bin/bundle exec /home/gurpal2000/ruby-1.9.3-p0/bin/ruby lib/main.rb > /storage/server/logs/myprog.txt 2>&1" gurpal2000
end script

谢谢

答案1

Upstart 没有损坏。请看以下内容:

我认为你可以将你的“ start on”简化为:

start on (filesystem and static-network-up)

请查看upstart-events(7),或者在线查看:

http://upstart.ubuntu.com/cookbook/#ubuntu-well-known-events-ubuntu-specific

也可以看看:

Upstart 仍然支持 SysV 作业,因此如果你真的想要,你可以创建/etc/init.d/foo

答案2

我还没有尝试用老旧的 SysV-init 替换 Upstart,但这应该是可行的;至少,init在过去,在 -replacements 之间进行交换非常简单。你只需要确保至少替换以下程序:

/sbin/halt
/sbin/init
/sbin/initctl
/sbin/poweroff
/sbin/reboot
/sbin/shutdown
/sbin/telinit

init当安装新的 C 库时,包管理器将尝试重新启动;希望这是通过标准telinit接口进行管理的,而不是专门硬编码到 Upstart 机制。

而且我当然不会指望事件管理脚本能够运行——插入 USB 记忆棒可能需要您自己安装它们。(无论如何,在我看来,这是更好的方法。)

在放弃 Upstart 配置文件之前,您是否尝试过:

start on mounted MOUNTPOINT=/path/to/mountpoint

相关内容