查看: 90|回复: 0

Linux 上使用Systemd 来进程守护Net应用

[复制链接]

2

主题

4

帖子

8

积分

新手上路

Rank: 1

积分
8
发表于 2023-7-18 12:05:27 | 显示全部楼层 |阅读模式
Systemd Service 的方式,用于在 Linux 系统上管理和运行服务。Systemd 是一个系统和服务管理器,可以自动化和简化 Linux 系统的管理和维护,包括启动、停止和管理后台服务。Systemd Service 是一种用于描述和配置服务的文件格式,通常使用 .service 扩展名,它可以告诉 Systemd 如何启动、停止、重启和管理服务。
几乎所有主流的 Linux 操作系统都使用 Systemd 作为默认的系统和服务管理器,因此在这些系统上,您都可以使用相同的方式来管理和运行服务。除了 Ubuntu,其他常见的 Linux 发行版,如 Debian、CentOS、Fedora、Red Hat Enterprise Linux 等都支持 Systemd。当然,不同的操作系统版本和发行版可能会有一些差异,但基本的使用方法是相同的。
进程守护步骤


  • 创建一个 .service 文件在 /etc/systemd/system/ 目录下创建一个名为 myapp.service 的文件,使用文本编辑器打开并添加以下内容:
[Unit]
Description=My .NET 6 Web API Application
After=network.target

[Service]
WorkingDirectory=/path/to/your/app
ExecStart=/usr/bin/dotnet /path/to/your/app/MyApp.dll
Restart=always
# Use the following line if you want to limit the resources used by the app
# MemoryLimit=1G

[Install]
WantedBy=multi-user.target将 WorkingDirectory 和 ExecStart 中的路径替换为您的应用程序的路径。

  • 启用和启动服务    使用以下命令启用和启动服务:
sudo systemctl enable myapp.service
sudo systemctl start myapp.service这将启用并启动您的应用程序服务,使其在系统重启后自动启动。

  • 检查服务状态    使用以下命令检查服务状态:
sudo systemctl status myapp.service如果一切正常,您应该看到服务已经在运行并且没有出现错误。
解释

[Unit] 部分: - Description 提供服务的简要描述。 - After 指定服务应在网络目标达成后启动。
[Service] 部分: - WorkingDirectory 设置服务的工作目录为应用程序的位置。 - ExecStart 指定要运行以启动应用程序的命令。 - Restart 将服务设置为在失败或停止时自动重新启动。 - MemoryLimit(在此示例中被注释掉)限制服务可以使用的内存量。
[Install] 部分: - WantedBy 指定此服务应该与哪个目标一起启动。
要使用此 unit 文件,您需要将其保存为 .service 扩展名,并将其放置在 /etc/systemd/system 目录下,然后运行 systemctl daemon-reload 命令使 systemd 意识到新服务。然后可以使用 systemctl start <service_name> 命令启动服务,其中 <service_name> 是不带 .service 扩展名的 unit 文件的名称。
常用命令

要停止一个使用 systemd 守护的 .NET 应用程序,您可以使用以下命令:
--重载
sudo systemctl daemon-reload

--开始
sudo systemctl status miniapi.service
--停止
sudo systemctl stop miniapi.service
--禁用 [此命令将停止应用程序的进程并停止服务。如果您希望在下次系统启动时保持应用程序不再运行]
sudo systemctl disable miniapi.service
--重启
sudo systemctl restart miniapi.service
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表