Nat*_*ate 6 ubuntu upstart runlevel
所以,我正在为 mysql 编写一个新贵的初始化脚本。应该是微不足道的吧?我的停止节看起来像:
kill timeout 30
stop on runlevel [016]
Run Code Online (Sandbox Code Playgroud)
我shutdown now -r
和 mysql 大喊我的 MyISAM 表崩溃了,就像kill -9
我的 mysql 进程一样。嘘。新贵似乎没有在重新启动之前等待 mysql 退出。在谷歌上的一些搜索发现我这个链接建议我这样做,而不是:
stop on starting rc RUNLEVEL=[016]
Run Code Online (Sandbox Code Playgroud)
事实上,这似乎解决了这个问题。
但是:WFT?本质上,我想在尝试卸载本地文件系统之前确保 mysql 已停止。这是正确的方法吗?为什么我的stop on runlevel
节在切换运行级别之前不等待 mysql 停止?
并且:这是你知道的,在任何地方都有记录吗?
小智 6
他的问题实际上是由 Upstarts 在处理 Ubuntu 上的 Upstart 作业和 SystemV 服务方面的灵活性引起的。
有关事件的信息,最好查看系统上的手册页。如果您正在运行 Ubuntu Natty 或更新版本,您现在将拥有 upstart-events(7):
man 7 upstart-events
Run Code Online (Sandbox Code Playgroud)
这为您提供了很多信息。这是(大部分)该手册页的在线版本:
http://upstart.ubuntu.com/cookbook/#ubuntu-well-known-events-ubuntu-specific
目前,Ubuntu 系统的关闭实际上是由工作的 SysV 方面完成的(由于历史原因)。如果您使用“ stop on runlevel [016]
”,则在发出该事件时您的工作将开始停止runlevel
。但是,如果时间过长,系统 ( )的SystemV部分/etc/init.d/*
将实际控制并关闭系统。然而,如果您使用“ stop on starting rc RUNLEVEL=[016]
”,Upstart(不是 SystemV)将运行您的作业,一旦 mysql 停止,则继续启动 SystemV 关闭序列。
Upstart Cookbook 包含很多这样的例子: