如何在Linux VPS上使用systemctl管理服务

systemctl是管理大多数现代Linux VPS发行版上服务的主要工具。它控制由systemd管理的服务,包括Web服务器、数据库、机器人、游戏服务器守护进程、监控工具以及您自己创建的自定义服务。

在下面的示例中,将nginx替换为您正在管理的服务。常见的服务名称包括nginxapache2mariadbmysqldockersshd以及自定义名称如arkserverdiscordbot

 

检查服务

在重启服务之前使用status。它显示服务是否正在运行,是否在启动时启用,以及最近的错误输出。

sudo systemctl status nginx

下面的截图使用SSH服务作为示例;相同的输出布局适用于其他systemd服务。

Ubuntu VPS终端显示SSH服务的systemctl状态输出

如果输出显示failed,请在反复重启之前阅读错误行。

您还可以使用journalctl查看日志:

sudo journalctl -u nginx --since "30 minutes ago"

在重启或测试服务时跟踪实时日志:

sudo journalctl -u nginx -f

 

启动、停止、重启和重新加载

命令功能
sudo systemctl start nginx启动已停止的服务。
sudo systemctl stop nginx停止正在运行的服务。
sudo systemctl restart nginx停止并重新启动服务。
sudo systemctl reload nginx在不完全重启的情况下重新加载配置,如果服务支持重新加载。
sudo systemctl reload-or-restart nginx如果可能则重新加载,否则重启。

当您只更改了配置文件并且服务支持时,使用reload。当应用程序需要完全停止/启动以应用更改时,使用restart

 

启用或禁用开机启动

现在启动服务和在启动时启用它是不同的操作。如果您希望服务在VPS重启后恢复,请启用它。

sudo systemctl enable nginx
sudo systemctl start nginx

要在一个命令中启用并启动它:

sudo systemctl enable --now nginx

要阻止它在启动时自动启动:

sudo systemctl disable nginx

 

重启多个服务

您可以将多个服务名称传递给许多systemctl命令:

sudo systemctl restart nginx php8.2-fpm mariadb

这在更改多个服务相互依赖的堆栈后很有用,例如Web服务器、PHP-FPM和数据库。

 

使用通配符

systemctl可以使用通配符匹配服务名称。这很有用,但要小心使用,因为它可能影响到比您预期更多的服务。

例如,这将显示所有匹配的PHP-FPM服务:

systemctl list-units 'php*-fpm.service'

在检查匹配项后,您可以重启匹配的服务:

sudo systemctl restart 'php*-fpm.service'

在使用restartstopdisable时,始终先列出匹配项。

 

创建自定义服务

您可以为游戏服务器、机器人或脚本创建自定义systemd服务,以便它在启动时启动并可以使用systemctl进行管理。

/etc/systemd/system/中创建一个单元文件:

sudo nano /etc/systemd/system/myserver.service

一个简单的服务文件如下所示:

[Unit]
Description=My custom server
After=network.target

[Service]
Type=simple
User=myuser
WorkingDirectory=/home/myuser/myserver
ExecStart=/home/myuser/myserver/start.sh
Restart=on-failure
RestartSec=10

[Install]
WantedBy=multi-user.target

创建或更改服务文件后,重新加载systemd以便它识别新的单元:

sudo systemctl daemon-reload

然后启用并启动它:

sudo systemctl enable --now myserver

检查它:

sudo systemctl status myserver
sudo journalctl -u myserver -f

如果服务失败,请检查ExecStart中的路径、User、文件权限,以及启动脚本在手动运行时是否正常,然后再尝试通过systemd运行。

  • 0 用戶發現這個有用
這篇文章有幫助嗎?

相關文章

如何使用SSH连接到Linux VPS

SSH是管理Linux VPS的常用方式。它为您提供服务器上的终端,以便您可以安装软件、编辑文件、检查日志、重启服务和运行游戏服务器命令。...

如何在 Linux VPS 上更新软件包

保持软件包更新有助于修补安全问题,并保持服务器工具的兼容性。如果 VPS 托管游戏服务器、数据库、面板、机器人或实时网站,请在维护窗口期间运行更新。 首先通过 SSH 连接:如何通过 SSH...

如何在Linux VPS上创建sudo用户

sudo用户允许您在不以root身份登录的情况下管理Linux VPS。这对于日常管理更安全,并且更容易为其他管理员提供受控访问。...

如何在Linux VPS上保护SSH

SSH是管理Linux VPS的主要方式,因此在服务器用于公共服务之前应进行安全设置。首先添加SSH密钥和sudo用户,然后尽可能减少基于密码的访问。...

如何检查Linux VPS上的磁盘使用情况

磁盘使用问题可能会导致更新、备份、日志、数据库和游戏存档无法正确写入。检查总磁盘使用情况以及哪些文件夹占用了最多空间。 使用SSH连接到VPS。 显示已挂载磁盘的使用情况:df -h...