以用户身份在启动时运行命令行 .net 应用程序,无需登录

以用户身份在启动时运行命令行 .net 应用程序,无需登录

我有一个 dotnet 控制台应用程序,执行时将运行循环并等待按键。在某些按键时,它将执行操作(通过 api 调用等)。

我有一台树莓派,在树莓派上运行着 ubuntu 服务器 22.10(64 位)。

我想运行这样的命令:

dotnet /home/myuser/src/prototypes/devops-control/Client/bin/Debug/net6.0/devops-control.dll "loop"

当 pi 启动时,我可以使用简单的宏键盘作为键盘,并将命令发送给应用程序。

该应用程序基本上

if arg[0] == 'loop' 
{
    while(true)
    {
        var key = Console.ReadKey().KeyChar;
        PerformAction(key)
    }
}

我已经安装了 dotnet,并在我的用户路径中设置(如果我通过 ssh 登录并运行命令,一切都会按预期工作)

但我只希望在启动 pi 时发生这种情况,这样我就可以让它无头,只需插入一个宏垫即可。

理想情况下,它只需启动,自动以用户身份登录,无需我输入密码,然后运行命令,该命令将运行应用程序等待按键。这意味着我可以通过 ssh 进入 pi 并提取新版本的代码等。并将所有内容放在一个地方。

答案1

您需要将该进程作为 systemd 服务运行。

这是一个漫长的过程,下面是其中之一很好的文章,解释了步骤(并提供一些背景信息)。

以下是另一个可能有帮助的解释来自

最后,展示如何设置 .NET 应用以此方式运行

这里有一个很棒的资源来自 DigitalOcean 的展示如何管理服务

相关内容