CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Envoyer des commandes sur un serveur nodejs avec le module pm2/forever

R1-9
R1-9
Niveau 17
15 juillet 2017 à 02:38:57

Salut !
J'ai un serveur nodejs et souhaite le faire tourner en permanence. Je lance mon serveur sur putty avec cette commande :

pm2 start app.js

Du coup j'ai installé les modules pm2 et forever pour ne pas mettre fin au process lorsque je ferme la session sur putty.
Cependant j'aimerais aussi envoyer mes propres commandes "custom" au serveur, par exemple quit; save; load. Pour se faire j'utilisais le stdin (quand j'hébergeais en local), mon code ressemblait à ça :

process.stdin.resume();
process.stdin.setEncoding('utf8');

process.stdin.on('data', function (text) {
    if (text.trim() === 'quit') {
        // je fais quelque chose ici
    }
    if (text.trim() === 'save') {
        // je fais autre chose là
    }
    if (text.trim() === 'load') {
        // je fais autre chose là
    }
});

Sauf que ce code ne fonctionne pas avec les modules pm2 et forever. D'après ce que j'ai compris c'est parce que mon process est "deamonized" :diable: (je sais pas trop ce que ça veut dire). Bref, il n'y que les commandes des modules (pm2 et forever) qui sont écoutées, les miennes ne le sont pas :( . (je ne vois même pas mes prints d'ailleurs)

Donc ma question est : Comment puis-je faire tourner mon programme en permanence en ayant la possibilité de faire des commandes "custom" ?

Merci d'avance

R1-9
R1-9
Niveau 17
15 juillet 2017 à 15:19:02

On ne peut pas vraiment le faire pour le moment. https://stackoverflow.com/questions/45109879/pass-commands-to-nodejs-server-using-pm2-module/45113421#45113421
Je mets le topic résolu mais je ne le bloque pas au cas où quelqu'un a un workaround propre.

Message édité le 15 juillet 2017 à 15:20:26 par R1-9
lisarael
lisarael
Niveau 13
15 juillet 2017 à 16:22:32

Tu peux lancer la commande via ssh :

ssh user@server.example.com "pm2 restart my-app"
dark_drow
dark_drow
Niveau 15
16 juillet 2017 à 10:26:03

Ca dépend de ce que appelle des commandes custom ? Le job de pm2 c'est surtout monitorer ton app et la relancer si elle crash.
Si tu veux envoyer des commandes systèmes à ton serveur, effectivement un script que tu exécute en ssh pourrait être envisageable ?
Si c'est plutot des commandes que ton serveur devrait pouvoir traiter, peut être que tu pourrais créer des routes spécifiques sur ton serveur web

Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Steam Deck
  • Hardware
La vidéo du moment