Форум русскоязычного сообщества Ubuntu


Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества?
Помогите нам с документацией!

Автор Тема: Ubuntu 18.04, Cron и dotnet  (Прочитано 884 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн coolbobah

  • Автор темы
  • Новичок
  • *
  • Сообщений: 34
    • Просмотр профиля
Ubuntu 18.04, Cron и dotnet
« : 22 Июня 2020, 21:11:04 »
Мое почтение комрады.

Дано:
телеграммобот (не мой, ковырять не умею)
свежая Ubuntu 18.04
dot.net sdk 2.1.
Cron

в /etc/crontab/:
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/bin/dotnet:/usr/local/bin/dotnet:/try/bot/
20 20 * * * root cd /try/bot; /usr/bin/dotnet exec bot.dll >> /try/bot/log.log 2>&1


не работает. Ни в 20-20, ни в другое время (:
на bot.dll права 777, на папку /bot/ права 777.
в логе пусто.

из командной строки выполняется,
если запихать в cкрипт - выполняется,
если запихать в скрипт, скрипт запихать в Cron - не работает.

под "не работает" я поясню, что имею ввиду.
Бот должен задавать несколько вопросов, значения записывать в себя и отключаться.
Через bash, напомню, все окей, все отрабатывает.
Через Cron - бот загружается, типа говорит "привет" и отключается.

пробовал различные манипуляции с /etc/crontab/ (добавить бинбаш, добавить PATH все подряд), запускать с (sudo) crontab -e и трясти в монитор пособием по MS Exchange - ничего не помогает.

Чисто интуитивно догадываюсь, что проблема в том, что Cron не может что-то подгрузить и чего-то ему для счастья не хватает.

Оффлайн bezbo

  • Старожил
  • *
  • Сообщений: 1750
    • Просмотр профиля
Re: Ubuntu 18.04, Cron и dotnet
« Ответ #1 : 22 Июня 2020, 21:46:54 »
попробуйте
sudo crontab -eдобавить
20 20 * * * /bin/bash -c "cd /try/bot ; /usr/bin/dotnet exec bot.dll >> /try/bot/log.log 2>&1"
« Последнее редактирование: 22 Июня 2020, 21:49:46 от bezbo »

Оффлайн coolbobah

  • Автор темы
  • Новичок
  • *
  • Сообщений: 34
    • Просмотр профиля
Re: Ubuntu 18.04, Cron и dotnet
« Ответ #2 : 22 Июня 2020, 22:42:25 »
Не запустился, первое сообщение не выплюнул.
/try/bot/log.log отсутствует

в syslog это:
Jun 22 22:19:01 ubuntu18 cron[312]: (root) RELOAD (crontabs/root)
Jun 22 22:19:01 ubuntu18 CRON[25725]: (root) CMD (/bin/bash -c "cd /try/bot ; /usr/bin/dotnet exec bot.dll >> /try/bot/log.log 2>&1")
Jun 22 22:31:01 ubuntu18 CRON[25931]: (CRON) info (No MTA installed, discarding output)
Jun 22 22:32:38 ubuntu18 qemu-ga: info: guest-exec called: "/bin/sh -c lsblk --list -o NAME,FSTYPE --noheadings /dev/vda"
Jun 22 22:32:39 ubuntu18 qemu-ga: info: guest-exec-status called, pid: 25947
Jun 22 22:32:39 ubuntu18 qemu-ga: info: guest-exec called: "/bin/sh -c df -Pk /dev/vda1"
Jun 22 22:32:40 ubuntu18 qemu-ga: info: guest-exec-status called, pid: 25949
Последние 4 строчки, если я не ошибаюсь, говорит демон виртуальной машины (да, это крутится на виртуалке) и отношения к делу не имеет.
Или?

Оффлайн bezbo

  • Старожил
  • *
  • Сообщений: 1750
    • Просмотр профиля
Re: Ubuntu 18.04, Cron и dotnet
« Ответ #3 : 22 Июня 2020, 22:50:27 »
No MTA installed

MTA - Message Transfer Agent

Оффлайн coolbobah

  • Автор темы
  • Новичок
  • *
  • Сообщений: 34
    • Просмотр профиля
Re: Ubuntu 18.04, Cron и dotnet
« Ответ #4 : 22 Июня 2020, 22:53:01 »
Тут вопросов нет. Постфикс ставить не хочу, да и не должен ли он логи, сиречь аутпут, отдавать командой
/try/bot/log.log 2>&1в собственно лог-файл?

Оффлайн ALiEN

  • Администратор
  • Старожил
  • *
  • Сообщений: 6752
  • 20% Cooler
    • Просмотр профиля
Re: Ubuntu 18.04, Cron и dotnet
« Ответ #5 : 22 Июня 2020, 23:13:06 »
20 20 * * * /bin/bash -c "/usr/bin/dotnet /try/bot/bot.dll >> /try/bot/log.log 2>&1"
🖥 AsRock B550M Pro4 :: AMD Ryzen 5 3600 :: 16 GB DDR4 :: AMD Radeon RX 6600 :: XFCE
💻 ACER 5750G :: Intel Core i5-2450M :: 6 GB DDR3 :: GeForce GT 630M :: XFCE

Оффлайн coolbobah

  • Автор темы
  • Новичок
  • *
  • Сообщений: 34
    • Просмотр профиля
Re: Ubuntu 18.04, Cron и dotnet
« Ответ #6 : 22 Июня 2020, 23:41:30 »
20 20 * * * /bin/bash -c "/usr/bin/dotnet /try/bot/bot.dll >> /try/bot/log.log 2>&1"
А при указывании прямого пути, в лог файл сыпется такая история.
log.log:
Unhandled Exception: System.ArgumentNullException: Value cannot be null.
Parameter name: connectionString
   at LiteDB.ConnectionString..ctor(String connectionString)
   at LiteDB.LiteDatabase..ctor(String connectionString, BsonMapper mapper)
   at bot.Program.ConfigureServices() in C:\sources\az\bot\Program.cs:line 60
   at bot.Program.Main(String[] args) in C:\sources\az\bot\Program.cs:line 29
   at bot.Program.<Main>(String[] args)
т.е. боту таки нужно окружение /try/bot/

Пробую запускать через /etc/crontab (ибо там я могу указать PATH):
# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/bin/dotnet:/usr/local/bin/dotnet:/try/bot

# m h dom mon dow user  command
17 *    * * *   root    cd / && run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
40 23   * * *   root    /bin/bash -c "/usr/bin/dotnet /try/bot/bot.dll > /try/bot/log.log 2>&1"
#
то же самое - реакции нет, лог такой же, как выше.

Скрипт test.sh
/bin/bash -c "/usr/bin/dotnet /try/bot/bot.dll >> /try/bot/log.log 2>&1" работает отлично.
в log.log пусто
« Последнее редактирование: 22 Июня 2020, 23:57:02 от coolbobah »

Оффлайн The Green Side

  • Старожил
  • *
  • Сообщений: 1178
    • Просмотр профиля
Re: Ubuntu 18.04, Cron и dotnet
« Ответ #7 : 23 Июня 2020, 06:46:24 »
Бот должен задавать несколько вопросов, значения записывать в себя и отключаться.
А кому он должен задавать вопросы? Админу в bash или юзеру в телеграме?
Debian 11, Debian 11 Server

Оффлайн coolbobah

  • Автор темы
  • Новичок
  • *
  • Сообщений: 34
    • Просмотр профиля
Re: Ubuntu 18.04, Cron и dotnet
« Ответ #8 : 23 Июня 2020, 10:46:41 »
А кому он должен задавать вопросы? Админу в bash или юзеру в телеграме?
Юзеру в ТГ.

Пользователь добавил сообщение 23 Июня 2020, 19:16:12:
Может что-то, кроме фаервола, убивать процесс из скрипта?

в целях, значить, саморазвития попробовал поставить исполнения скрипта в
rc.local - нет запуска
служба /lib/systemd/system/bot.service - выкидывает первое сообщение и глохнет.

Что еще можно придумать?


Пользователь добавил сообщение 23 Июня 2020, 22:20:13:
Решил.

Итак. Внутри дотнета есть какой-то баг: при запуске в бэкграунде приложение переходит в STOPPED.
Решение - виртуальный терминал screen. Т.е. приложение думает, что оно в консоли, а система так не думает.

screen -d -m -S SERVER bash -c 'cd /try/bot && sudo /usr/bin/dotnet exec bot.dll'

подробнее тут:
https://stackoverflow.com/questions/49479635/how-can-i-run-a-dotnet-application-in-the-background-using-sudo-on-linux
« Последнее редактирование: 23 Июня 2020, 22:20:13 от coolbobah »

 

Страница сгенерирована за 0.05 секунд. Запросов: 25.