spawnSync /bin/sh ENOBUFS

公開日時
更新日時

Node.jsで execSync を用いて外部コマンド(s3 sync)を実行するようにした。

import { execSync } from 'child_process'

const output = execSync('/opt/awscli/aws s3 sync xxx yyy')
console.log(output.toString())

sync結果を受け取りconsole.logでログに残すようにしたところ、↓のエラーが発生した。

spawnSync /bin/sh ENOBUFS

標準出力のバッファ上限に達したためエラーが発生した模様。

ログを残すのは必須ではなかったので、下記記事を参考にexecSyncの第二引数に { stdio: 'ignore' } を追加しログ出力を無効化したところエラーは出なくなった。

import { execSync } from 'child_process'

execSync('/opt/awscli/aws s3 sync xxx yyy', { stdio: 'ignore' })

ログを残す必要がある場合は第二引数に{ maxBuffer: 2048 * 1024 } を指定してバッファ上限(デフォルトは1024 * 1024)を増やす方法が使えそう。

参考


Related #js