节点产卵进程检查timout

我已经产生了有时需要很长时间运行的过程,我的问题是有一种方法来限制这个过程时间? 例如3分钟后杀死这个过程?

您可以在超时使用process.kill 。 但是,如果孩子在被解雇之前完成,请记得取消超时时间。

看看这个例子:

这是3秒后返回的child.sh

 #!/bin/bash sleep 3 echo DATA FROM CHILD 

这是一个产生这个孩子的Node程序:

 var seconds = process.argv[2] || 2; var spawn = require('child_process').spawn; var child = spawn('bash', ['child.sh'], {detached: true}); var stopped; var timeout = setTimeout(() => { console.log('Timeout'); try { process.kill(-child.pid, 'SIGKILL'); } catch (e) { console.log('Cannot kill process'); } }, seconds*1000); child.on('error', err => console.log('Error:', err)); child.on('exit', () => { console.log('Stopped'); clearTimeout(timeout); }); child.stdout.on('data', data => console.log(data.toString())); 

默认情况下,它等待2秒,这比孩子需要的时间短,孩子会被杀死,但是你可以添加一个秒数作为命令行参数:

 node nodeprogram.js 10 

等待10秒钟,这足以让孩子完成。