
나는 한동안 이 문제에 대해 의구심을 품었고 내 문제를 한 가지 문제로 구체화했습니다. 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
.