
He estado dándole vueltas a esto por un tiempo y he logrado refinar mi problema a un solo problema. Tengo un servicio que se supone que ejecuta un script de shell para iniciar procesos de demonio (usando nohup), estos procesos son robots de discordia escritos usando nodejs y discordjs. Actualmente tengo un servicio que inicia el bot de prueba de discordia cuando lo ejecuto sudo systemctl start startdiscordbots
y funciona bien. El problema es que cuando reinicio la computadora, el servicio arroja el siguiente error:
/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]: }
Entonces sé que el servicio se inicia bien una vez que todos los demás servicios se han cargado correctamente, pero supongo que hay un servicio que necesito colocar en la After=
parte del archivo startdiscordbots.service que me perdí, mi startdiscordbots.service
código está debajo
[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
¿Alguien sabe si hay algún servicio que debo especificar en el After=
que me he perdido o está sucediendo algo más?
La computadora que estoy usando es una RaspberryPi con Ubuntu Server instalado, estoy usando el nodo v16.8.0 y npm v7.21.0 con discordjs v13.1.0. Solo tengo acceso a la terminal, así que no me den respuestas diciéndome que use otras herramientas.
¡Cualquier ayuda sería increíble!
Respuesta1
Escriba una función que se bloquee hasta que la red esté activa, realice otras pruebas (¿hay una default
ruta ( man ip ip-route
), puede usted host google.com
( man host
), etc., luego inicia sus servicios? He escrito un script bash para ayudar con esto: https://github.com/waltinator/net-o-matic
observa la conexión , y cuando la conexión se interrumpe, hace algo especificado por el usuario para intentar volver a conectarse. Un poco bash
de conocimiento le permitirá modificar esto man bash
.