用C#编写Linux守护进程
2018-01-31 00:00
225 查看
如果要在Red Hat Enterprise Linux上将.NET Core进程作为后台进程运行,则可以创建自定义systemd单元。今天我将为.NET Core编写两个自定义系统单元的例子。一个是运行.NET Core控制台应用程序的一种类型,另一个是运行ASP.NET Core Web应用程序的简单类型。
控制台应用程序
建立一个应用程序
您可以用dotnet run在systemd中使用指定项目目录作为工作目录。但是,我们来构建一个二进制文件并将其用于systemd。用dotnet new 命令创建您的项目后编辑Program.cs如下。using System;
using System.IO;
namespace ConsoleApplication
{
public class Program
{
public static void Main(string[] args)
{
var path = Path.GetTempFileName();
File.WriteAllText(path, "Hello Temp File!");
Console.WriteLine($"Wrote temp file: {path}");
}
}
}然后用
dotnet publish命令发布项目。你会看到
bin/<Configuration>/<Framework>目录下的二进制文件。
创建一个自定义的systemd
首先,创建一个运行守护进程和工作目录的用户。$ sudo useradd -s /sbin/nologin dotnetuser$ sudo mkdir /var/SystemdExample
$ sudo cp /home/tatanaka/Documents/git/tanaka-takayoshi/SystemdExample/1.1/ConsoleApp/bin/Release/netcoreapp1.1/publish/* /var/SystemdExample
$ sudo chown -R dotnetuser:dotnetuser /var/SystemdExample然后在
/etc/systemd/system/目录下创建一个自定义的systemd单元文件。文件名应该是
<unit-name>.<unit-type>。我创建的目录和文件名为:
/etc/systemd/system/netcore-console-example.service。
systemctl命令执行守护进程。您可以使用
systemctl status命令或
journalctl命令查看控制台输出。
使用PrivateTemp
在上述系统单元中,程序在临时文件夹下写入一个文件。你有时想写一个来自其他用户的临时文件是安全的。您可以在[Service]section中的指定使用PrivateTemp。
/tmp像目录,但这不是实际的
/tmp目录。
Web应用程序
建立一个应用程序
现在我们来构建一个ASP.NET Core Web应用程序。今天我使用默认的模板项目。创建一个自定义的systemd
为这个Web应用程序也指定dotnetuser名称。/etc/systemd/system/netcore-web-example.service。
ASPNETCORE_URLS单元文件中指定了环境变量 。
.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com
相关文章推荐
- 用C#编写Linux守护进程
- 利用C#编写Linux守护进程实例代码
- linux 守护进程编写
- linux编程-守护进程编写
- 编写Linux/Unix守护进程
- 编写Linux/Unix守护进程
- 如何编写linux守护进程
- Linux下后台守护进程的编写实例
- linux守护进程 编写要点
- linux下python守护进程编写和原理理解
- 如何编写Linux Daemon后台程序(守护进程)
- C语言编写linux下的守护进程
- Python实现Linux下守护进程的编写方法
- linux守护进程编写
- 如何编写linux守护进程?
- linux进程控制编程与守护进程编写实例
- 编写Linux/Unix守护进程
- linux 守护进程编写
- Python实现Linux下守护进程的编写方法
- linux 守护进程编写