如何在Ubuntu Systemd/Upstart中启用或者禁用服务

时间:2020-03-05 15:26:37  来源:igfitidea点击:

通常,需要在我们的Ubuntu系统上临时或者永久启用或者禁用服务。
有时,我们可能需要某些服务在启动时自动启动,例如,SSH或者Web服务器,有时我们可能需要禁用我们不再需要的服务,并且正在播放CPU和内存。

在本教程中,我们会查看我们如何在Ubuntu上启用和禁用服务。
为此,我们必须首先了解ubuntu有3个主初始系统

  • Systemd
  • Upstart
  • SysV

每个初始系统都有不同的启动和停止服务方式。
我们会看看其中的每一个。

如何在SystemD Init中启用和禁用服务

要在SystemD中启动服务,请执行以下命令:

systemctl start service-name

例如,要启动Apache Web服务,请运行

systemctl start apache2

要验证服务是否正在运行,请运行

systemctl status apache2

输出

● apache2.service - LSB: Apache2 web server
   Loaded: loaded (/etc/init.d/apache2; bad; vendor preset: enabled)
  Drop-In: /lib/systemd/system/apache2.service.d
           └─apache2-systemd.conf
   Active: active (running) since Thu 2016-03-15 17:09:05 UTC; 35s ago
     Docs: man:systemd-sysv-generator(8)
   CGroup: /system.slice/apache2.service
           ├─2499 /usr/sbin/apache2 -k start
           ├─2502 /usr/sbin/apache2 -k start
           └─2503 /usr/sbin/apache2 -k start
Mar 15 17:09:04 ip-172-31-41-251 systemd[1]: Starting LSB: Apache2 web server...
Mar 15 17:09:04 ip-172-31-41-251 apache2[2475]:  * Starting Apache httpd web ser
Mar 15 17:09:05 ip-172-31-41-251 apache2[2475]:  *
Mar 15 17:09:05 ip-172-31-41-251 systemd[1]: Started LSB: Apache2 web server.

停止服务运行服务

systemctl stop apache2

确认服务未运行,运行

systemctl status apache2

输出

● apache2.service - LSB: Apache2 web server
   Loaded: loaded (/etc/init.d/apache2; bad; vendor preset: enabled)
  Drop-In: /lib/systemd/system/apache2.service.d
           └─apache2-systemd.conf
   Active: inactive (dead) since Thu 2016-03-15 17:19:47 UTC; 12s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 2822 ExecStop=/etc/init.d/apache2 stop (code=exited, status=0/SUCCESS
  Process: 2687 ExecStart=/etc/init.d/apache2 start (code=exited, status=0/SUCCE
Mar 15 17:10:11 ip-172-31-41-251 systemd[1]: Starting LSB: Apache2 web server...
Mar 15 17:10:11 ip-172-31-41-251 apache2[2687]:  * Starting Apache httpd web ser
Mar 15 17:10:12 ip-172-31-41-251 apache2[2687]:  *
Mar 15 17:10:12 ip-172-31-41-251 systemd[1]: Started LSB: Apache2 web server.
Mar 15 17:19:46 ip-172-31-41-251 systemd[1]: Stopping LSB: Apache2 web server...
Mar 15 17:19:46 ip-172-31-41-251 apache2[2822]:  * Stopping Apache httpd web ser
Mar 15 17:19:47 ip-172-31-41-251 apache2[2822]:  *
Mar 15 17:19:47 ip-172-31-41-251 systemd[1]: Stopped LSB: Apache2 web server.

启用Apache2服务启动运行

systemctl enable apache2

在启动运行时禁用Apache2服务

systemctl disable apache2

重新启动服务

systemctl restart apache2

检查服务目前是否已配置为在下次启动时启动

systemctl is-enabled apache2

输出

Executing /lib/systemd/systemd-sysv-install is-enabled apache2
enabled

检查服务是否处于活动状态

systemctl is-active apache2

输出

active

如何完全删除SystemD服务

如果我们安装了包,稍后决定我们不再需要它了。
你如何完全去除它?
按照下面的命令。

首先,停止服务

systemctl stop service-name

然后禁用服务

systemctl disable service-name

在Systemd中删除服务

rm /etc/systemd/system/service-name
rm /etc/systemd/system/service-name/[related symlinks]

重新加载系统

systemctl daemon-reload

终于运行了,

systemctl reset-failed

如何在Upstart Init中启用和禁用服务

Upstart Init系统在SystemD之前亮相它在Ubuntu 9.10中使用给Ubuntu 14.10.
后来在Ubuntu 15.04和更新版本中逐步淘汰SystemD init的铺路方式。
在此示例中,让我们看看我们如何在Ubuntu 14.04中启动和停止,启用和禁用服务。

Upstart利用配置文件来控制服务。
这些文件在/etc/init目录下保持。
这些文件由斯坦扎斯组织的纯文本部分组成,每个节斯坦扎描述了服务以及它的工作原理。

检查服务是否正在运行或者未运行以下命令

initctl status service-name

或者

service service-name status

或者

status service-name

在此示例中,我们将检查杯子的状态,Linux打印服务器。

initctl status cups

或者

service cups status

或者

status cups

输出

cups start/running, process 3029

要停止服务运行以下命令

initctl stop cups

或者

service cups stop

或者

stop cups

输出

cups stop/waiting

在Upstart Init中启用服务

在/etc/init/*.conf文件中,我们将找到跳跃 - 启动服务的"重生"指令,应该意外地崩溃,也可以重新启动。
它通常默认启用。

例如,在下面的/etc/init/cups.conf文件中,

第一个参数(3)是尝试重新启动的尝试次数,第二个参数(12)是重试之间的时间间隔。
如果它未能自动重启。
它将保持在停止状态。

禁用Upstart Init中的服务

在下面运行命令

echo manual >> /etc/init/service.override

这将创建一个覆盖文件,禁用服务而无需更改作业定义。
对于杯子服务,命令将是

echo manual >> /etc/init/cups.override

重新启动系统后,杯子将处于停止状态。

如果我们希望重新启用该服务,则必须删除/etc/init/cups.override文件。

SYSV-RC-CONF工具

这是一个基于文本的控制台,为我们提供了计划启动的不同服务和运行势的概述。

它可以使用以下命令安装

apt-get install sysv-rc-conf

执行工具,运行

sysv-rc-conf

Jobs-admin工具

这是另一个功能,允许我们在GUI环境中控制服务和进程。

我们可以通过运行安装此操作。

apt-get install jobs-admin

如何在SYSV init中启用和禁用服务

在Sysv Init运行中启用服务

update-rc.d enable service-name

例如,如果要启用Apache Web服务器,则会运行

update-rc.d enable apache2

禁用服务,运行

update-rc.d disable service-name

例如

update-rc.d disable apache2