Je veux lire quelques stdout de certains processus avec nodejs, dans Windows.Nodejs lit stdout de certains processus et fait des choses
Jusqu'à présent, j'ai obtenu ceci:
Je simulent la sortie de processus avec:
ping -t google.com > ping.txt
La sortie ping est déversée dans le fichier ping.txt. Ce fichier est surveillé dans le nœud pour les modifications.
Ainsi, nodejs je suis arrivé ce code:
var filename = 'ping.txt';
var fs = require("fs");
fs.watch(filename, function (event, filename) {
if (event == 'change') {
console.log('change', filename);
fs.stat(filename, function (err, stats) {
console.log('size ', stats.size);
if(stats.size > 500){
fs.truncate(filename,10,function(){
console.log("truncated");
});
}
})
}
});
Mais ceci est ma sortie nodejs:
size 0
change ping.txt
size 192
change ping.txt
size 253
change ping.txt
size 375
change ping.txt
size 436
change ping.txt
size 559
truncated
change ping.txt
size 620
truncated
change ping.txt
size 743
truncated
change ping.txt
size 804
truncated
change ping.txt
size 926
truncated
Le fichier est tronqué jamais.
Je ne veux pas obtenir une taille de fichier massive, car le processus réel génère beaucoup de sortie. C'est donc la principale raison pour essayer de tronquer le fichier.
Mais ça ne marche pas.
Quelqu'un peut-il me donner un coup de main? C'est ma première expérience nodejs. Plus tard, je prévois de sortir ce processus stdout trought un websocket, mais maintenant je suis coincé avec ce problème.
Merci d'avance! Meilleures salutations!
Edit 1: Le processus ping n'est pas le vrai que je suis en train de lire. Le vrai processus est un mineur de cryptocoin. Et c'est très gourmand en ressources. Donc c'est parce que j'ai pris cette approche. Pour vider la sortie du processus dans un fichier et le lire avec un autre processus. Je ne suis pas 100% heureux que nodejs gère ce processus de cryptocoin, parce que je ne sais pas si node peut le gérer.
S'il y a une meilleure façon de le faire, je suis très heureux de l'entendre. Merci!
Le processus 'ping' n'a aucun moyen de dire que vous avez tronqué le fichier, de sorte qu'il continuera à écrire à l'endroit où il pense que la fin du fichier devrait être. Vous ne pouvez pas le faire de cette façon. Sûrement node.js a un mécanisme intégré pour canaliser la sortie standard d'un enfant? –
Merci Harry, comme je l'ai dit dans le commentaire ci-dessous, le vrai processus est un mineur de cryptocoin. Et est très coûteux en ressources. Je ne sais pas si nodejs peut le gérer. Et je ne veux pas en dépendre. C'est la raison pour laquelle j'ai pris cette idée, de jeter la sortie dans un fichier et de la lire avec un autre processus. Pensez-vous que c'est une meilleure approche? Ou un meilleur langage à utiliser? Merci d'avance! – nicomonjelat
Pourquoi est-ce que cela fait une différence à quel point l'enfant consomme beaucoup de ressources? Tout le processus parent doit faire est de traiter la sortie, non? –