PM2打破子进程bash脚本

时间:2017-02-13 17:35:01

标签: node.js linux bash pm2

我的代码中有一个位置,我需要生成一个bash脚本,写入其标准输入,并从其标准输出中读取。

我使用节点child_process.spawn

执行此操作

不幸的是,当我在pm2下运行此代码时,bash脚本会在调用mkdir时永久挂起。

有没有办法避免这个问题?

test.js

'use strict';

const child_process = require('child_process');

setInterval(() => {
    const process = child_process.spawn('./test.sh');
    process.on('exit', () => {
        console.log('process exit');
    });
    process.stdout.on('data', (data) => {
        console.log('Output: ' + data.toString('utf8'));
    });
}, 1000);

test.sh

#!/usr/bin/env bash

TEMP=$(mktemp -d);
echo "Created directory $TEMP"
rm -rf ${TEMP}
echo "Deleted directory $TEMP"

预期输出

Starting
Spawning test.sh
Output: Created directory /tmp/tmp.I6Buifdmlu

Output: Deleted directory /tmp/tmp.I6Buifdmlu

process exit

实际输出

[STREAMING] Now streaming realtime logs for [test] process
2|test     | Spawning test.sh
2|test     | Spawning test.sh

环境

操作系统:Ubuntu 14.04

节点:4.7.3

PM2:2.4.0

注意:我在Mac OSX上测试了这个并没有问题

0 个答案:

没有答案