Выполнение do tnet через cron на RedHat не удается - PullRequest
0 голосов
/ 24 апреля 2020

У нас есть базовый скрипт do tnet, который мы используем для индексации некоторых файлов. Мы используем RedHat Software Collection, чтобы такие элементы, как do tnet, не могли ie войти в нашу настройку RHEL.

Чтобы запустить скрипт, мы делаем следующее: source scl_source enable rh-dotnet30 /opt/rh/rh-dotnet30/root/usr/bin/dotnet /d/h/fileprocessor.dll 1

Мы хотим запустить это в cron, но мы не можем заставить его работать. Мы попробовали следующее:

  1. Добавление команды 'source' в профиль bash, но это нам не кажется надежным и не запускается при событии cron.
  2. Запуск этого непосредственно в cron
  3. Запуск этого скрипта в cron

Мы в растерянности, кажется, мы никогда не сможем заставить две команды работать вместе. Если мы не включим исходную команду, даже если в нашем профиле она не запустится и выдает ошибку «Не удалось найти ни одного установленного. NET Core SDK». Вы хотели запустить. NET Core Команды SDK? Установите. NET Core SDK из: https://aka.ms/dotnet-download "

1 Ответ

0 голосов
/ 29 апреля 2020

У меня работает следующее. Я использую rh-dotnet31 (. NET Core 3.1), так как rh-dotnet30 (. NET Core 3.0) больше не поддерживается:

  1. Установочные пакеты:

    $ sudo yum install rh-dotnet31 -y
    
  2. Начать с известного каталога

    $ cd ~
    
  3. Создать каталог для. NET Исходный код ядра для использования

    $ mkdir hello
    $ cd hello
    
  4. Создайте простое приложение для тестирования

    $ scl enable rh-dotnet31 bash
    $ dotnet new console
    $ dotnet publish
    $ exit      # this exits from the subshell started from scl enable command above
    
  5. Скопируйте сборку в отдельный каталог, в который мы можем ее запустить

    $ cp -a bin/Debug/netcoreapp3.1/publish ../hello-bin
    
  6. Создайте скрипт, который будет вызывать cron

    $ cd ~
    

    и поместите его в файл ./test.sh:

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

    Возможно, вы даже сможете объединить последние две строки (source... и dotnet ...) в scl enable rh-dotnet31 -- dotnet $HOME/hello-bin/hello.dll 1

    Затем сделайте его исполняемым:

    $ chmod +x ./test.sh
    
  7. Настройка файла 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!
...