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

列印
  • 0

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

在下面的示例中,将nginx替换为您正在管理的服务。常见的服务名称包括nginx、apache2、mariadb、mysql、docker、sshd以及自定义名称如arkserver或discordbot。

 

检查服务

在重启服务之前使用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'

在使用restart、stop或disable时,始终先列出匹配项。

 

创建自定义服务

您可以为游戏服务器、机器人或脚本创建自定义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运行。


這篇文章有幫助嗎?

相關文章

« 返回

Follow us on Social Media

Stay in the loop! Follow our social media accounts and stay up-to-date with the latest news, announcements, tips & tricks and behind-the-scenes insights!