如何启用或禁用服务?

我读到了如何在Ubuntu中启用和禁用服务,似乎有不同的可能性来管理它们。

我找到的第一个方法是update-rc.d用于向启动添加新服务,其目标是/etc/init.d文件夹及其内容。

我找到的另一个是编辑/etc/init文件夹中的.conf文件。

启用/禁用/添加服务的推荐方法是什么?为什么?

您能否提供一个简短的防弹步骤示例,介绍如何在Ubuntu中添加服务并启用和禁用它?

可以使用GUI(如startup应用程序)或终端启用/禁用服务。

对于终端,您有几种选择。 首先,打开一个终端(例如,在短划线中键入“terminal”,然后打开它)。 然后:

临时启用/禁用服务

暂时停止和启动服务(不启用/禁用它们以备将来启动),您可以键入service SERVICE_NAME 。 例如:

  • sudo service apache2 stop (将停止 Apache服务,直到重新启动或直到你再次启动它)。

  • sudo service apache2 start (假设它已经停止,将启动 Apache服务。)。

  • service apache2 status (如果启用/运行disabled / NOT运行,将告诉您服务的STATUS)。

  • sudo service apache2 restart (将RESTART服务。这是最常用的,当你更改了配置文件。在这种情况下,如果你改变了PHP配置或Apache配置。重启将使你不必停止/启动有2个命令行)

  • service apache2 (在这种情况下,由于您没有提及要为服务执行的ACTION,它将显示该特定服务可用的所有选项。)此方面因服务而异,例如,MySQL只会提及它缺少一个参数。 对于网络服务等其他服务,它会提到所有可用选项的小列表。


SYSTEMD

从Ubuntu 15.04开始,Upstart将被弃用,转而使用Systemd。 使用Systemd来管理服务,我们可以执行以下操作:

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

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

systemctl restart SERVICE – 使用它重新启动服务

systemctl reload SERVICE – 如果服务支持它,它将重新加载与其相关的配置文件,而不会中断正在使用该服务的任何进程。

systemctl status SERVICE – 显示systemctl status SERVICE的状态。 判断服务当前是否正在运行。

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

systemctl disable SERVICE – 在下次重启或下一次停止事件时systemctl disable SERVICE 。 它在重启后仍然存在。

systemctl is-enabled SERVICE – 检查当前是否将服务配置为在下次重新引导时启动。

systemctl is-active SERVICE – 检查服务当前是否处于活动状态。

systemctl show SERVICE – 显示有关服务的所有信息。

sudo systemctl mask SERVICE – 通过将服务链接到/dev/null来完全禁用服务; 您无法手动启动服务或启用该服务。

sudo systemctl unmask SERVICE – 删除指向/dev/null的链接,并恢复启用和/或手动启动服务的function。


UPSTART(自2005年4月15日起弃用)

如果我们想使用正式的Upstart方式(请注意,目前并非所有服务都已转换为Upstart),我们可以使用以下命令:

status SERVICE – 这将告诉我们转换后的服务是否正在运行。 请注意,不推荐使用此选项以支持startstopstatusrestart 。 它还会告诉我们服务是否尚未转换为新贵:

转换后的服务通常会输出当前状态(Starting,Running,Stopping …)和进程ID。 未转换的服务会给出有关未知作业的错误。

某些快捷方式可能只能使用上面的service命令,但不能使用下面的命令,除非它们100%转换为upstart服务:

  • STARTsudo start mysql

  • 停止sudo stop mysql

  • RESTARTsudo restart mysql

  • 状态sudo status smbd

启用/禁用服务

要将服务从永久启动或停止切换,您需要:

 echo manual | sudo tee /etc/init/SERVICE.override 

manual将阻止Upstart在下次启动时自动加载服务。 具有.override结尾的任何服务都将优先于原始服务文件。 您之后只能手动启动服务。 如果你不想这样,那么只需删除.override 。 例如:

 echo manual | sudo tee /etc/init/mysql.override 

将MySQL服务置于manual模式。 如果你不想要这个,那你就可以做到

 sudo rm /etc/init/mysql.override 

并重新启动以使服务再次自动启动。 当然,要启用服务,最常见的方法是安装它。 如果您安装Apache,Nginx,MySQL或其他设备,它们会在完成安装后自动启动,并在每次启动计算机时启动。 如上所述,禁用将使用服务manual

目前,在Ubuntu, SysVUpstartsystemd中 ,软件实际上有三种不同的启动方式。 这里将服务定义为系统在后台运行的程序,而不是由用户直接启动和运行的程序。

的SysV

在Linux中启动服务的传统方法是在/etc/init.d放置一个脚本,然后使用update-rc.d命令(或在基于RedHat的发行版, chkconfig )启用或禁用它。

此命令使用一些稍微复杂的逻辑在/etc/rc#.d创建符号链接,以控制启动服务的顺序。 如果运行ls /etc/rc2.d您可以看到使用文件名K##xxxx杀死服务的顺序,并以文件名S##xxxx开头。 S##xxxx中的S##xxxx表示服务xxxx的“起始顺序”。 相反, K##xxxx中的K##xxxx表示服务xxxx命令。

SysV的一个主要问题是,在启动系统时, 一切都必须以串行方式完成,一个接一个,使系统启动时间非常慢 。 有人尝试将其并行化,但它们是偶然的,很难充分利用。 这是Upstart创建的主要原因。

暴发户

Upstart使用/etc/init作业定义文件来定义应该启动服务的事件。 因此,在系统启动时,upstart会处理各种事件,然后可以并行启动多个服务。 这允许他们充分利用系统的资源,例如,通过在另一个CPU绑定服务运行时启动磁盘绑定服务,或者在网络等待分配动态IP地址时。

您可以通过运行ls /etc/init/*.conf来查看所有upstart作业文件

让我停下来说,如果你不知道服务是什么,或者做什么,请不要禁用它!

并非所有服务都已转换为暴发户。 在过去的几个月里,在Canonical的服务器团队工作期间,我已经研究了许多转换后的作业文件,最好的部分是它允许人们摆脱所有脚本“魔法”而只是放入这里和那里很少有命令来确定如何启动服务,仅此而已。 但就目前而言,只有少数传统的网络服务,如鱿鱼桑巴 ,已被转换。

服务是新贵吗?

为了确定服务是否是基于upstart的,您可以运行status命令:

 status servicename 

如果这是一个新贵的工作,它将显示:

 $ status statd statd start/running, process 942 

但如果不是,你会看到更像这样的东西:

 $ status apache2 status: Unknown job: apache2 

在这种情况下, apache2尚未转换为upstart 。 因此,要禁用apache2您只需运行即可

 sudo update-rc.d apache2 disable sudo service apache2 stop 

在upstart中禁用服务(作业)

Upstart作业定义没有update-rc.d命令。 要禁用作业,您需要直接编辑作业文件以禁用它。 有两种方法可以做到这一点。

如果你仍然想要手动启动它,那么你需要start on条件下注释掉start on 。 假设您要安装samba ,但不要自动启动它。 这是作业文件(在natty中):

 description "SMB/CIFS File Server" author "Steve Langasek " start on local-filesystems stop on runlevel [!2345] respawn pre-start script RUN_MODE="daemons" [ -r /etc/default/samba ] && . /etc/default/samba [ "$RUN_MODE" = inetd ] && { stop; exit 0; } install -o root -g root -m 755 -d /var/run/samba end script exec smbd -F 

要禁用samba ,您只需将#放在“ start on local-filesystems ”之前。 请注意,虽然它不会在启动时重新启动,但您仍需要将其停止

 sudo service smbd stop 

但是,如果您从未希望samba启动,我建议您实际删除该包。 但是,如果您希望安装但不能启动它,您还可以执行以下操作:

 mv /etc/init/smbd.conf /etc/init/smbd.conf.disabled 

使用start / stop节禁用服务(截至11.04)

从11.04版的upstart版本开始,有一个新的关键字可以禁用stanzas的start onstop onmanual 。 因此,从11.04开始禁用该服务的另一种方法是:

 echo 'manual' | sudo tee /etc/init/mysql.override # command from root shell echo manual >> /etc/init/mysql.override 

您可以创建一个override文件来禁用服务,而无需编辑作业定义,只需将manual关键字放入其中即可。

SYSV-RC-conf的

尝试使用sysv-rc-conf

 sudo apt-get install sysv-rc-conf 

并开始管理服务,执行

 sudo sysv-rc-conf 

这会打开像这样的交互式窗口

在此处输入图像描述

您可以使用Ctrl+n进一步浏览页面,然后Ctrl+p进行上一页。 您可以通过在所需的运行级别上选择SPACE来启用和禁用服务。

乔布斯管理

另一个替代方案是通过安装来完成Jobs-Admin

 sudo apt-get install jobs-admin 

哪个也提供这样的GUI

jobs-admin预览

要显示更多作业,您必须从其菜单中勾选显示受保护的作业

chkconfig的

第三个选项是chkconfig

 sudo apt-get install chkconfig 

它可以通过CLI chkconfig ,显示On / Off作业列表。 我们还可以使用chkconfig –list查看系统服务

可以使用服务打开

 chkconfig  on 

可以使用关闭服务

 chkconfig  off 

我们甚至可以使用具有正确标题的正确init脚本添加我们自己的服务。

 chkconfig --add  

更新的rc.d

另外一个选项可以在这里引用update-rc.d , 这里简要解释一下。

请注意,对于Ubuntu Server 12.04,使用update-rc.d 而不是chkconfig。

对于我们这些通过ssh运行Ubuntu的人来说,我认为最好的选择是rcconf – 一个基于文本的程序:

 sudo apt-get install rcconf sudo rcconf 

替代文字

使用制表符和箭头键导航,按空格键启用/禁用。 重启后,更改会持续存在。

从这篇博文中借来的截图,其中还显示了sysv-rc-conf – 一个类似的工具,它也可以让你设置运行级别。 (对于那些碰巧关心跑步水平而希望改变它们的人:)

不幸的是,rcconf不能与upstart( /etc/init/*列出的服务)一起使用,只是使用传统机制( ls -l /etc/init.d/* – 不是符号链接的机制)。

幸运的是,许多与服务器相关的服务(Apache,Tomcat,mdadm,boinc-client ……)尚未转移到新手。

我发现有这个GUI工具,类似于BUM但与Upstart兼容:

  • 乔布斯管理

     sudo apt-get install jobs-admin 

编辑现有的upstart配置文件(如上所述)并不是一个好主意。 更新的软件包可以提供更新的配置,您不得不一遍又一遍地重复更改。

通过查看man 5 init可以找到更合适的解决方案:使用覆盖配置。 简短的例子:假设我们有一个名为“foobar”的服务,所以会有一个名为/etc/init/foobar.conf的文件及其upstart配置。 现在你不想删除该文件,也不想修改它 – 但是你不希望这个服务运行吗? 因此,在它旁边放置一个覆盖文件: /etc/init/foobar.override ,包含(可选地带有描述的标题),而不是在行stop on start on / stop on用一个单词放置一行: manual 。 这样你就告诉upstart基本上使用foobar.conf ,但是覆盖启动定义只能在手动强制执行时启动该服务(在我们的示例中通过service foobar start )。

还有Boot-Up Manager

要安装: sudo apt-get install bum

更多信息: http : //www.marzocca.net/linux/bum.html

在此处输入图像描述