모든 http 처리 서비스가 시작된 후 서비스 시작

모든 http 처리 서비스가 시작된 후 서비스 시작

나는 한동안 이 문제에 대해 의구심을 품었고 내 문제를 한 가지 문제로 구체화했습니다. nohup을 사용하여 데몬 프로세스를 시작하기 위해 쉘 스크립트를 실행해야 하는 서비스가 있습니다. 이 프로세스는 nodejs 및 discordjs를 사용하여 작성된 discord 봇입니다. 현재 저는 Discord 봇을 실행할 때 테스트 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.service코드는 다음과 같습니다.

[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=내가 놓친 서비스 에 지정해야 하는 서비스가 있는지, 아니면 다른 일이 진행되고 있는지 아는 사람이 있나요 ?

제가 사용하고 있는 컴퓨터는 Ubuntu Server가 설치된 RaspberryPi이고, discordjs v13.1.0과 함께 노드 v16.8.0 및 npm v7.21.0을 사용하고 있습니다. 저는 터미널로만 접속이 가능하니 다른 도구를 사용하라는 답변은 하지 말아주세요.

어떤 도움이라도 놀라울 것입니다!

답변1

네트워크가 가동될 때까지 차단하고 다른 테스트(경로가 있는지 default( man ip ip-route), 사용할 수 있는지 host google.com( man host) 등을 수행한 다음 서비스를 시작하는 함수를 작성합니다. 이를 돕기 위해 bash 스크립트를 작성했습니다. https://github.com/waltinator/net-o-matic연결을 감시합니다 .) , 연결이 끊어지면 사용자가 지정한 작업을 수행하여 다시 연결을 시도 bash합니다 man bash.

관련 정보