use child_process.execFile to prevent potential command injection