Ubuntu –启动,停止,重新启动服务

时间:2020-02-23 14:44:56  来源:igfitidea点击:

当应用程序在后台运行时,称为服务。
这些对于运行系统或者我们的软件应用程序至关重要。
在大多数服务器上可以找到的一些常见服务是Apache,MySQL,NGINX等。
当系统启动时,这些服务被配置为自动启动。

我正在使用Ubuntu托管我的。
我还使用MySQL存储所有数据。
有时,我会进行定期更新,因此必须重新启动这些服务。
在本教程中,我们将学习在Ubuntu中启动,停止和重新启动服务的各种方法。

在Ubuntu上启动,停止,重新启动服务的不同方法

  • systemctl命令
  • 服务命令
  • 初始化脚本

使用systemctl启动,停止和重新启动Ubuntu服务

这是管理Ubuntu服务的首选方式。
如果不确定服务名称,可以运行" systemctl --all"命令列出所有服务。
但是,可能有数百种服务正在运行,因此最好使用grep命令过滤列表。

让我们尝试找出MySQL和Apache HTTP服务器的服务名称。

# systemctl --all | grep -i mysql
mysql.service                                                                          loaded    active   running   MySQL Community Server                                                       
# systemctl --all | grep -i apache
apache2.service                                                                        loaded    active   running   The Apache HTTP Server                                                       
# 

因此,MySQL服务名称为" mysql.service",而Apache HTTP服务器服务名称为" apache2.service"。

让我们学习如何使用systemctl命令管理这些服务。

1.使用systemctl停止服务

# systemctl stop mysql.service 
#

如果执行成功,该命令将不提供任何输出。

2.使用systemctl检查服务状态

我们可以使用以下命令检查服务状态。

# systemctl status mysql.service 
● mysql.service - MySQL Community Server
 Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
 Active: inactive (dead) since Sat 2017-05-02 17:39:22 UTC; 9s ago
 Main PID: 26948 (code=exited, status=0/SUCCESS)

3.使用systemctl启动服务

# systemctl start mysql.service 
# 
# systemctl status mysql.service 
● mysql.service - MySQL Community Server
 Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
 Active: active (running) since Sat 2017-05-02 17:41:43 UTC; 3s ago
Process: 30254 ExecStart=/usr/sbin/mysqld --daemonize --pid-file=/run/mysqld/mysqld.pid (code=exited, s
Process: 30233 ExecStartPre=/usr/share/mysql/mysql-systemd-start pre (code=exited, status=0/SUCCESS)
 Main PID: 30256 (mysqld)
  Tasks: 27 (limit: 2318)
 CGroup: /system.slice/mysql.service
         └─30256 /usr/sbin/mysqld --daemonize --pid-file=/run/mysqld/mysqld.pid

请注意,当我们停止服务时,"活动"值处于非活动状态(无效)。
启动服务后,它已更改为活动(运行)状态。

4.使用systemctl重新启动服务

# systemctl restart apache2.service
# systemctl status apache2.service 
● apache2.service - The Apache HTTP Server
 Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
Drop-In: /lib/systemd/system/apache2.service.d
         └─apache2-systemd.conf
 Active: active (running) since Sat 2017-05-02 17:55:09 UTC; 8s ago

Ubuntu Systemctl命令启动停止重新启动状态

提示:不需要在systemctl命令中使用完整的服务名称。
例如,如果我们运行" systemctl restart mysql",它将自动向其附加" .service"并执行" systemctl restart mysql.service"命令。

使用service命令管理Ubuntu服务

我们可以使用service --status-all命令列出所有服务。
如果需要,请使用grep命令过滤出您要查找的服务。

# service --status-all | grep mysql
 [ + ]  mysql
#

在service命令中,我们必须首先指定服务名称,然后指定要执行的命令。

停止服务:

# service mysql stop

启动服务:

# service mysql start

重新启动服务:

# service mysql restart

检查服务状态:

# service mysql status
● mysql.service - MySQL Community Server
 Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
 Active: active (running) since Sat 2017-05-02 18:19:34 UTC; 39s ago
Process: 31768 ExecStart=/usr/sbin/mysqld --daemonize --pid-file=/run/mysqld/mysqld.pid (code=exited, s
Process: 31746 ExecStartPre=/usr/share/mysql/mysql-systemd-start pre (code=exited, status=0/SUCCESS)
 Main PID: 31770 (mysqld)
  Tasks: 27 (limit: 2318)
 CGroup: /system.slice/mysql.service
         └─31770 /usr/sbin/mysqld --daemonize --pid-file=/run/mysqld/mysqld.pid

Ubuntu服务命令启动停止重新启动状态

Ubuntu初始化脚本来管理服务

服务初始化脚本位于/etc/init.d/目录中。
我们可以使用这些脚本来管理服务。
但是,不建议再使用它们,最好使用systemctl命令。

停止服务:

# /etc/init.d/mysql stop
[ ok ] Stopping mysql (via systemctl): mysql.service.
#

启动服务:

# /etc/init.d/mysql start
[ ok ] Starting mysql (via systemctl): mysql.service.
#

重新启动服务:

# /etc/init.d/mysql restart
[ ok ] Restarting mysql (via systemctl): mysql.service.
#

检查服务状态:

# /etc/init.d/mysql status
● mysql.service - MySQL Community Server
 Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
 Active: active (running) since Sat 2017-05-02 18:26:30 UTC; 17s ago

Ubuntu Init脚本启动停止重新启动状态

启动/停止服务时的权限问题

如果您未以root用户身份登录,则上述命令将要求您提供root用户密码才能执行。
如果输入了错误的密码,将抛出认证失败错误,并且将不执行命令。

如果您在sudoers列表中,则可以以sudo用户身份运行这些命令。
如果您不在sudoers列表中,则会显示一条错误消息,指出您不在sudoers列表中,并且将报告该事件。

test@localhost:~$systemctl stop mysql
==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ===
Authentication is required to stop 'mysql.service'.
Authenticating as: root
Password: 
polkit-agent-helper-1: pam_authenticate failed: Authentication failure
==== AUTHENTICATION FAILED ===
Failed to stop mysql.service: Access denied
See system logs and 'systemctl status mysql.service' for details.
test@localhost:~$sudo systemctl stop mysql
[sudo] password for test: 
test is not in the sudoers file.  This incident will be reported.
test@localhost:~$

因此,如果要管理任何服务,请确保您具有执行这些命令所需的特权。