我在一台开发机器(笔记本电脑)上安装了 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'
manual
start on
有效地从作业的配置中删除该节。
如果你使用的是 Ubuntu 10.04,你可以执行以下操作:
sudo sh -c 'echo start on never >> /etc/init/mysql.conf'
这最后的 start on
文件中的内容将覆盖所有先前的内容,因此这应该可以工作,尽管它假设没有名为的事件never
。