从 upstart 中删除服务

从 upstart 中删除服务

我在一台开发机器(笔记本电脑)上安装了 mysql(来自 repos),并且不需要每次启动时都运行守护进程。我已将 /etc/init/mysql.conf 复制到 /etc/init/mysql.conf.old,然后删除了“start on”行后面的所有内容。但是,重新启动后,我无法再通过 upstart 启动 mysqld:

$ sudo service mysql start
start: Unknown job: mysql

这也失败了(此时尝试任何操作):

$ sudo service mysql restart
stop: Unknown job: mysql
start: Unknown job: mysql

这是我的 upstart 脚本:

# /etc/init/mysql.conf
....
start on
stop on starting rc RUNLEVEL=[016]

这是默认脚本:

# /etc/init/mysql.conf.old
....
start on runlevel [2345]
stop on starting rc RUNLEVEL=[016]

到目前为止,我读到的所有内容都表明,这就是阻止服务在启动时启动的方法。有没有更好的方法,还是我在 upstart 脚本中犯了一个错误?

更新:我已将备份配置文件移出 /etc/init 并重新启动,认为可能存在冲突,但 upstart 仍然说Unknown job: mysql

答案1

如果您使用的是 Ubuntu 11.04 或更高版本,您可以使用manual/etc/init 中的关键字和 .override 文件来禁用自动启动:

sudo sh -c 'echo manual >> /etc/init/mysql.override'

manualstart on有效地从作业的配置中删除该节。

如果你使用的是 Ubuntu 10.04,你可以执行以下操作:

sudo sh -c 'echo start on never >> /etc/init/mysql.conf'

最后的 start on文件中的内容将覆盖所有先前的内容,因此这应该可以工作,尽管它假设没有名为的事件never

答案2

帖子:“开始于”部分需要完整并且语法正确。

start on runlevel [!0123456]

此行表示当运行级别不在 [0,1,2,3,4,5,6] 时执行(这些是唯一的运行级别,因此永远不会运行)。

另一个选择是chkconfig按照使用邮政。

相关内容