.net core 在RedHat上通过cron运行dotnet失败

.net core 在RedHat上通过cron运行dotnet失败,.net-core,cron,rhel,rhel7,software-collections,.net Core,Cron,Rhel,Rhel7,Software Collections,我们有一个dotnet核心脚本,用于索引一些文件。我们利用RedHat软件集合,使dotnet等项目可以与RHEL设置相结合 要运行脚本,请执行以下操作: 源scl_源启用rh-dotnet30 /opt/rh/rh-dotnet30/root/usr/bin/dotnet/d/h/fileprocessor.dll 1 我们想在cron中运行它,但我们无法让它工作。我们尝试了以下方法: 将“source”命令添加到bash概要文件中,但这对我们来说似乎不可靠,并且不能在cron事件上运行

我们有一个dotnet核心脚本,用于索引一些文件。我们利用RedHat软件集合,使dotnet等项目可以与RHEL设置相结合

要运行脚本,请执行以下操作:

源scl_源启用rh-dotnet30
/opt/rh/rh-dotnet30/root/usr/bin/dotnet/d/h/fileprocessor.dll 1

我们想在cron中运行它,但我们无法让它工作。我们尝试了以下方法:

  • 将“source”命令添加到bash概要文件中,但这对我们来说似乎不可靠,并且不能在cron事件上运行
  • 直接在cron中运行
  • 在cron中将其作为shell脚本运行
  • 我们不知所措,似乎永远无法让这两个命令协同工作。如果我们不包括source命令,即使在我们的配置文件中,它也不会运行,并给出错误“无法找到任何已安装的.NET Core SDK” 是否要运行.NET Core SDK命令?请从以下位置安装.NET Core SDK:

    以下内容适合我。但我使用的是
    rh-dotnet31
    (.NET Core 3.1),因为
    rh-dotnet30
    (.NET Core 3.0)不受支持:

  • 安装软件包:

    $ sudo yum install rh-dotnet31 -y
    
  • 从已知目录开始

    $ cd ~
    
  • 为.NET核心源代码创建要使用的目录

    $ mkdir hello
    $ cd hello
    
  • 创建一个简单的测试应用程序

    $ scl enable rh-dotnet31 bash
    $ dotnet new console
    $ dotnet publish
    $ exit      # this exits from the subshell started from scl enable command above
    
  • 将构建复制到一个单独的目录中,我们可以在其中运行它

    $ cp -a bin/Debug/netcoreapp3.1/publish ../hello-bin
    
  • 创建cron将调用的脚本

    $ cd ~
    
    并将其放入
    /test.sh
    文件中:

    #!/bin/bash echo "test.sh running now...." source scl_source enable rh-dotnet31 dotnet $HOME/hello-bin/hello.dll 1
  • 设置crontab文件

    $ crontab -e
    
    然后在此文件中添加下面的行。这个每分钟运行一次脚本

    * * * * *       $HOME/test.sh >> $HOME/test.cron.log 2>&1
    
  • 在我的机器上,cron正在运行,因此几分钟后我在日志文件中看到cron作业的输出:

    $ tail -f test.cron.log                     
    test.sh running now....
    Hello World!
    test.sh running now....
    Hello World!
    test.sh running now....
    Hello World!
    test.sh running now....
    Hello World!
    test.sh running now....
    Hello World!
    

    我们遇到的问题是,只安装了运行时,而没有安装SDK。一旦安装了SDK(包括许多其他依赖项),它就可以正常工作了

    您能否共享您尝试的每个步骤的日志/错误消息?此外,此crontab是否适用于普通用户?或者作为普通用户的root?Crontab。此外,只有错误才是真正的“源代码”,而不是在脚本中运行。您有机会重新尝试吗?我的回答对你有用吗?它有助于确定问题吗?我们确定了问题,现在发布了答案。
    $ tail -f test.cron.log                     
    test.sh running now....
    Hello World!
    test.sh running now....
    Hello World!
    test.sh running now....
    Hello World!
    test.sh running now....
    Hello World!
    test.sh running now....
    Hello World!