Запустить службу после того, как все службы обработки http были запущены

Я уже некоторое время ломал голову над этим, и мне удалось уточнить мою проблему до одной проблемы. У меня есть служба, которая должна запускать сценарий оболочки для запуска процессов демона (с использованием nohup), эти процессы являются ботами Discord, написанными с использованием nodejs и discordjs. В настоящее время у меня есть служба, которая запускает тестового бота Discord, когда я запускаю его с помощью sudo systemctl start startdiscordbots , и он отлично работает. Проблема в том, что когда я перезагружаю компьютер, служба выдает следующую ошибку:

/daemons/discordbots/discounter/node_modules/discord.js/src/rest/RequestHandler.js:172
Aug 31 13:35:15 ubuntu start.sh[2459]:         throw new HTTPError(error.message, error.constructor.name, error.status, request);
Aug 31 13:35:15 ubuntu start.sh[2459]:               ^
Aug 31 13:35:15 ubuntu start.sh[2459]: HTTPError [FetchError]: request to https://discord.com/api/v9/gateway/bot failed, reason: getaddrinfo EAI_AGAIN discord.com
Aug 31 13:35:15 ubuntu start.sh[2459]:     at RequestHandler.execute (/daemons/discordbots/discounter/node_modules/discord.js/src/rest/RequestHandler.js:172:15)
Aug 31 13:35:15 ubuntu start.sh[2459]:     at processTicksAndRejections (node:internal/process/task_queues:96:5)
Aug 31 13:35:15 ubuntu start.sh[2459]:     at async RequestHandler.push (/daemons/discordbots/discounter/node_modules/discord.js/src/rest/RequestHandler.js:50:14)
Aug 31 13:35:15 ubuntu start.sh[2459]:     at async WebSocketManager.connect (/daemons/discordbots/discounter/node_modules/discord.js/src/client/websocket/WebSocketManager.js:128:9)
Aug 31 13:35:15 ubuntu start.sh[2459]:     at async Client.login (/daemons/discordbots/discounter/node_modules/discord.js/src/client/Client.js:245:7) {
Aug 31 13:35:15 ubuntu start.sh[2459]:   code: 500,
Aug 31 13:35:15 ubuntu start.sh[2459]:   method: 'get',
Aug 31 13:35:15 ubuntu start.sh[2459]:   path: '/gateway/bot',
Aug 31 13:35:15 ubuntu start.sh[2459]:   requestData: { json: undefined, files: [] }
Aug 31 13:35:15 ubuntu start.sh[2459]: }

Итак, я знаю, что служба запускается нормально после правильной загрузки всех других служб, но я предполагаю, что есть служба, которую мне нужно добавить в After = часть пропущенного мной файла startdiscordbots.service, мои startdiscordbots.код службы приведен ниже

[Unit]
Description=Start discord bots as background processes

After=network.target systemd-user-sessions.service

[Service]
Type=simple
ExecStart=/startup/start.sh
Restart=on-failure
RestartSec=5
KillMode=process
User=ubuntu

[Install]
WantedBy=multi-user.target

Кто-нибудь знает, есть ли служба, которую я должен указать в After = , которую я пропустил, или что-то еще происходит?

Компьютер Я использую RaspberryPi с установленным сервером Ubuntu, я использую node v16.8.0 и npm v7.21.0 с discordjs v13.1.0. У меня есть доступ только к терминалу, поэтому, пожалуйста, не давайте мне ответов на использование других инструментов.

Любая помощь была бы потрясающей!

0
задан 1 September 2021 в 01:26

1 ответ

Напишите функцию, которая блокируется, пока сеть не работает, выполняет другие тесты (есть ли маршрут по умолчанию ( man ip-route ), можете ли вы разместить google.com ( man host ) и т. д., а затем запустить свои службы. Я написал сценарий bash, чтобы помочь с этим: https: //github.com/waltinator/net-o-matic Он наблюдает за соединением и, когда соединение разрывается, выполняет указанную пользователем вещь, пытаясь восстановить соединение. Небольшое знание bash позволит вы измените это. Прочтите man bash .

1
ответ дан 4 September 2021 в 09:24

Другие вопросы по тегам:

Похожие вопросы: