Linux 如何在远程服务器上控制Systemd服务

Linux 如何在远程服务器上控制Systemd服务

作为Linux用户和管理员,我们负责管理远程Linux服务器上的服务,包括像Apache或Nginx这样的Web服务器,或者像MySQL或PostgreSQL这样的数据库服务器。为了有效地管理这些服务,我们需要对Linux的底层系统和服务管理器systemd有深入的了解。

Systemd是一个强大而功能丰富的系统和服务管理器,专为基于Linux的操作系统设计。它负责管理服务的初始化和终止,追踪系统进程,并监视系统资源。它被广泛认为是许多现代Linux发行版(如Ubuntu、Fedora、CentOS和Debian)的默认系统和服务管理器。在远程Linux服务器上控制systemd服务对您来说非常重要。这包括启动、停止、重启、启用、禁用和监控系统服务等任务。虽然有各种方法来管理systemd服务,但使用像systemctl、journalctl等命令是最高效和可靠的方式。

本文提供了一个全面的教程,介绍如何使用systemd命令来管理远程Linux服务器上的服务。我们将涵盖启动和停止服务、查看其状态、在启动时启用和禁用服务以及查看系统日志等命令。每个命令都将附带其输出,并提供相应的示例以增加理解。

步骤1:连接到远程服务器

要使用SSH连接到远程服务器,请在本地计算机上打开终端,然后输入以下命令,将”username”替换为您自己的用户名,将”remote.server.com”替换为远程服务器的主机名或IP地址使用此命令-

ssh username@remote.server.com

输出的结果可能如下所示−

The authenticity of host 'remote.server.com (192.168.1.1)' can't be established.
RSA key fingerprint is 11:22:33:44:55:66:77:88:99:AA:BB:CC:DD:EE:FF:00.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'remote.server.com,192.168.1.1' (RSA) to the list of known hosts.
username@remote.server.com's password:

成功身份验证后,您将能够访问远程服务器并显示该特定服务器的命令终端或提示。

步骤2:检查服务的状态

连接远程服务器后,需要使用systemctl status命令来检查系统中任何服务的状态。要了解任何服务的状态,只需在Linux终端或提示中输入此命令-

sudo systemctl status apache2

执行命令”sudo systemctl status apache2″将会给你一个关于Apache服务当前状态的简要信息。

apache2.service - The Apache HTTP Server
     Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
     Active: active (running) since Mon 2023-03-15 14:30:00 UTC; 5min ago
   Main PID: 12345 (apache2)
      Tasks: 55 (limit: 2288)
     Memory: 67.0M
     CGroup: /system.slice/apache2.service
             ├─12345 /usr/sbin/apache2 -k start
             ├─12346 /usr/sbin/apache2 -k start
             └─12347 /usr/sbin/apache2 -k start
Mar 15 14:30:00 example.com systemd[1]: Started The Apache HTTP Server.

步骤3:启动服务

要启动特定的服务,请将“service_name”替换为实际的服务名称。例如,如果你想在远程服务器上启动Apache Web服务器,可以写下面的输入命令 −

sudo systemctl start apache2

执行命令后,Apache服务将在远程服务器上启动,并显示相应的输出。

[sudo] password for <username>:

注意:这是一个提示输入密码的地方。输入密码后按回车键。如果密码正确,输出可能会是这样的。

Job for apache2.service started successfully

步骤4: 停止服务

如果一个服务正在运行,而你需要停止它,你可以使用 systemctl stop 命令来进行停止。此停止命令的语法如下:

sudo systemctl stop apache2

输出可能如下所示−

[sudo] password for user: 
[user@hostname ~]sudo systemctl stop apache2
[user@hostname ~]

这将停止远程服务器上的Apache服务。

步骤5:重新启动服务

如果您对服务做出了更改,并且需要重新启动以使更改生效,则可以使用systemctl restart命令来执行此操作。此输入命令的语法如下 –

sudo systemctl restart apache2

它将允许您为该用户输入密码 –

[sudo] password for user:

使用“sudo”命令以root用户的特权运行“systemctl”命令时,终端会要求用户输入密码。这是为了重启Apache Web服务器,需要管理员访问权限。输出结果如下所示:

Restarting Apache2 web server...

这个空行表示Apache Web服务器正在重新启动。

这一行是一个空行,用于分隔输出和命令提示符。

请注意,实际输出可能因使用的具体Linux发行版和版本而有所不同。此外,如果重新启动Apache web服务器时出现任何错误或问题,可能会显示其他输出以指示出错的原因。

步骤6:启用服务

如果希望某个服务在系统启动时自动启动,可以使用systemctl enable命令来启用它。此输入命令的语法如下所示。

sudo systemctl enable apache2

该命令的输出将取决于Apache2服务的当前状态。如果服务已经启用,您可能会看到如下信息-

Synchronizing state of apache2.service with SysV service script with /lib/systemd/systemd-sysv-install.Executing: /lib/systemd/systemd-sysv-install enable apache2

如果服务尚未启用,则输出可能如下所示−

Created symlink /etc/systemd/system/multi-user.target.wants/apache2.service → /lib/systemd/system/apache2.service.

无论哪种方式,systemctl enable命令都确保Apache2服务在系统启动时自动启动。

步骤7:检查服务日志

如果服务无法正常工作或遇到问题,您可以使用journalctl命令来检查其日志。

以下是一个输入命令的示例−

sudo journalctl -u apache2

journalctl命令的输出-

-- Logs begin at Mon 2023-03-13 00:00:00 UTC, end at Mon 2023-03-13 23:59:59 UTC. --
Mar 13 08:30:01 server systemd[1]: Starting The Apache HTTP Server...
Mar 13 08:30:01 server apachectl[12345]: AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1. Set the 'ServerName' directive globally to suppress this message
Mar 13 08:30:01 server systemd[1]: Started The Apache HTTP Server.
Mar 13 08:30:01 server systemd[1]: apache2.service: Main process exited, code=exited, status=0/SUCCESS
Mar 13 08:30:01 server systemd[1]: apache2.service: Succeeded.

步骤8:退出远程服务器

一旦您完成了远程服务器上的任务,您可以通过输入以下命令退出SSH会话−

exit

这是一个终端输出的例子

me@local-machine:~ssh remote-server
Welcome to remote-server!
me@remote-server:~ ls
file1.txt  file2.txt  file3.txt
me@remote-server:~exit
logout
Connection to remote-server closed.
me@local-machine:~

这将关闭SSH连接并将你返回到本地机器的命令提示符。

结论

总之,我们学习了如何使用诸如systemctl status、systemctl start、systemctl stop、systemctl enable和systemctl disable等命令来管理远程Linux服务器上的systemd服务以及更多其他命令。这些命令帮助你检查服务的状态,启动和停止服务,并在启动时启用/禁用自动启动。

通过按照这些步骤,我们可以高效地管理远程Linux服务器上的systemd服务,并确保其顺畅运行。此外,自动化服务的启动和关闭可以确保其始终可用。总的来说,掌握远程Linux服务器上控制systemd服务的能力是任何Linux系统用户的重要技能。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程