在守护进程中使用stdin?

时间:2017-12-03 05:26:18

标签: javascript node.js

我有一个需要全天候运行的脚本,所以我一直使用pm2运行它。但是,我也希望能够偶尔检查脚本。在将其作为守护进程运行之前,我将其设置为读取stdin,但对于守护进程,这不起作用。有没有一种简单的方法来执行此操作并运行守护进程?

我知道这与守护进程的本质相矛盾,但我需要脚本连续运行并且用户输入有限。

1 个答案:

答案 0 :(得分:0)

可以使用process.spawn完成,以下示例摘自本书:Professional Node.js

创建名为plus_one.js的文件:

UPDATE products SET quantityInStock=quantityInStock-1 WHERE productCode=':productCode

您可以通过调用以下方式运行此简单程序:

// unpause the stdin stream 
process.stdin.resume(); 
process.stdin.on('data', function(data) {
var number; 
try {
  // parse the input data into a number 
  number = parseInt(data.toString(), 10);

  // increment by one 
  number += 1;
  // output the number
  process.stdout.write(number + "\n"); 
 } catch(err) {
    process.stderr.write(err.message + "\n"); 
 }
});

创建一个名为plus_one_test.js的文件:

$ node plus_one.js

在这里,您将在第1行到第4行启动+1应用作为子进程。 然后使用setInterval函数每秒执行以下操作: 创建小于10,000的随机自然数。将该数字作为字符串发送到子进程。等待子进程用字符串回复。