如何防止Linux服务自动启动?


9

我最近从Windows迁移到Linux(xubuntu)

我是开发人员并安装了我需要的所有东西,LAMP。在Windows中,我曾经关闭所有不必要的服务 - 我不需要一直运行Apache或MySQL服务。每当我需要MySQL时,我曾经使用过:

net start mysql

我如何在Linux中做同样的事情?

  1. 从自动启动中禁用不需要的守护程序?
  2. 只在我需要它们时启动它们?

3
我认为你应该包括你正在使用的ubuntu的确切版本。新的ubuntu版本使用upstart,它有自己的陷阱。
vtest 2010年

编辑:我正在使用Xubuntu最新版本10.04,但id不想使用和GUI这个,只能从终端。看起来像@prhq在他的回答中得到了一些东西。什么是暴发户?
Aviv 2010年

属于其他地方,无论是服务器故障还是Unix。虽然仍然有用。
ripper234

Answers:


10

在大多数Linux发行版中,您可以通过运行以下命令(以root身份或使用sudo)手动启动/停止服务:

# /etc/init.d/apache2 start
# /etc/init.d/mysqld start

# /etc/init.d/apache2 stop
# /etc/init.d/mysqld stop

哪些自动启动的服务由/etc/rc [runlevel] .d /中的文件链接控制。使用命令“runlevel”以root身份查找当前的运行级别

# runlevel
N 2

这里表示运行级别2现在你只需删除/etc/rc2.d/中你不想启动的那些文件。

在桌面上删除apache和Mysql通常没问题,但要注意删除其他服务。


3
这是相当误导的,即使你说“大多数发行版”。我会将你的食谱定为特定发行版。
vtest 2010年

您有哪些想法?我只能想到ArchLinux(但那些用户应该已经知道他们在做什么)。当然,一些发行版具有特定的工具,但上述技术也适用于它们。
hultqvist 2010年

很奇怪,我可以在/etc/rc2.d目录中看到一个名为S91apache2的文件,我想它启动了apache2 ...但我找不到任何关于MySQL的文件。我在哪里可以了解这个自动启动守护进程?
Aviv 2010年

然后可能没有为自动启动配置mysql服务器。这个网站看起来好像有一个很好的解释:yolinux.com/TUTORIALS/LinuxTutorialInitProcess.html
hultqvist 2010年

注意,在* BSD和Slackware树下,目录是/etc/rc.d/

6

Ubuntu 10.04正处于两个服务管理系统之间的转换过程中:SysVinit(大多数Linux发行版使用的传统系统)和Upstart(Ubuntu推出的更新系统,并在越来越多的发行版中可用)。

SysVinit服务管理脚本在/etc/init.d。您可以启动服务/etc/init.d/SERVICENAME start并使用它来停止它/etc/init.d/SERVICENAME stop。服务是否在引导时自动启动取决于符号链接的存在,/etc/rc?.d其中?是从(运行级别2到数字的位置。防止服务在启动时自动启动的最简单方法是使用。5update-rc.d SERVICENAME disable

Upstart服务管理配置文件位于/etc/init。您可以启动服务start SERVICENAME并使用它来停止它stop SERVICENAME。配置文件/etc/init/SERVICENAME.conf包含一行指示何时启动服务:start on …。禁用这些服务的一种简单方法是将该行更改为start on never and (…)。如果您不想编辑该文件,您还可以完全禁用该服务,而不会通过将包装系统重命名为不结束而使包装系统混淆.conf

dpkg-divert --add --local --divert /etc/init/foo.conf.disabled --rename /etc/init/foo.conf

从Ubuntu 10.04开始,Apache附带了一个SysVinit脚本,而Mysql附带了一个Upstart脚本。


编辑servicename.conf真的是首选方式吗?特别是当理论上更新可以更新这些配置文件并覆盖您的更改时
Masse

@Masse:它并不总是首选方式,但它具有始终工作的优势。有些服务读取文件/etc/default并在START_FOO那里有一个你可以关闭的选项,但许多人希望在安装时运行。更新不会在没有提示的情况下覆盖您的更改,因为这些都是conffiles。
Gilles

哇。这似乎是倒退的重要一步。
Masse

@Masse:Conffiles应由管理员编辑。但是,如果您不想这样做,您还可以使用dpkg-divert重命名服务文件。但是,如果这样做,您将无法显式启动该服务。
吉尔斯

6

对于使用systemd(15.04及更高版本)的Ubuntu版本,请使用:

systemctl disable service

这将完成这项工作。它将禁用该服务,并在重新启动后不会重新启动。暂时启用只需启动服务。不启用

要查找服务名称,请使用

service --status-all

其他命令是:

systemctl start service - 用它来启动服务。重启后不会持续存在

systemctl stop service - 用它来停止服务。重启后不会持续存在

systemctl restart service - 使用它重新启动服务

systemctl status service - 显示服务的状态。告知服务当前是否正在运行。

systemctl enable service - 在下次重启或下次启动事件时打开服务。它在重启后仍然存在。

systemctl disable service - 在下次重启或下次停止事件时关闭服务。它在重启后仍然存在。


1
遗憾的是,这不是公认的答案:)。谢谢,我完全忘了那个命令。
Nordes
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.