master

简介: 【10月更文挑战第25天】

Node.js 的 child_process 模块允许你创建子进程来执行系统命令。这对于执行外部程序和脚本非常有用,尤其是当你需要并行处理任务时。Node.js 使用非阻塞I/O模型,这意味着主进程可以继续执行其他任务,而子进程在后台运行。

child_process 模块的方法

  1. exec:运行一个命令并缓存任何产生的输出。
  2. spawn:启动一个子进程来运行一个命令,可以处理命令的输出流。
  3. fork:特别用于启动一个Node.js脚本的子进程,允许父子进程间通信。

exec() 方法详解

exec() 方法非常适合运行命令并获取其输出。它等待命令执行完成,然后一次性返回所有输出。

语法:

child_process.exec(command[, options], callback)

参数:

  • command:要运行的命令。
  • options:配置选项(如工作目录、环境变量等)。
  • callback:命令执行完成后调用的函数,接收 (error, stdout, stderr) 作为参数。

实例代码:

const {
    exec } = require('child_process');

exec('ls -l', (error, stdout, stderr) => {
   
    if (error) {
   
        console.error(`执行出错: ${
     error}`);
        return;
    }
    if (stderr) {
   
        console.error(`标准错误: ${
     stderr}`);
        return;
    }
    console.log(`标准输出: ${
     stdout}`);
});

exec() 方法使用实例

假设我们有两个文件:support.jsmaster.js

support.js

console.log("进程 " + process.argv[2] + " 执行。");

master.js

const {
    exec } = require('child_process');

for (let i = 0; i < 3; i++) {
   
    const workerProcess = exec('node support.js ' + i, (error, stdout, stderr) => {
   
        if (error) {
   
            console.log(`错误: ${
     error}`);
            console.log(`错误代码: ${
     error.code}`);
            console.log(`接收到的信号: ${
     error.signal}`);
            return;
        }
        if (stderr) {
   
            console.log(`标准错误: ${
     stderr}`);
            return;
        }
        console.log(`标准输出: ${
     stdout}`);
    });

    workerProcess.on('exit', (code) => {
   
        console.log(`子进程已退出,退出码 ${
     code}`);
    });
}

在这个例子中,master.js 脚本使用 exec() 方法三次调用 support.js,每次传递一个不同的参数。exec() 方法的回调函数处理每个子进程的输出和错误。

目录
相关文章
|
5月前
|
机器学习/深度学习 人工智能 分布式计算
主从模式(Master-Slave Architecture)
主从模式(Master-Slave Architecture)
248 0
|
数据库
Master Standby 切换
本文档主要演示GreenPlum数据库的Master节点的Standby在异常后的数据同步及Master节点故障后,Standby的切换。在操作前通过gpstate命令查看Standby的状态是正常的,数据也在同步状态。
783 0
Master Standby 切换
|
Kubernetes Docker 容器
kubeadm HA master集群master重置故障恢复
文章楔子 对于一个具有HA master的集群来说,发生单点故障通常不会影响集群的正常运行,只要及时复原单点故障,就可以避免潜在的数据、状态丢失。本文旨在指导读者,在kubeadm搭建的HA master集群中,某一master主机遭遇硬件更换、系统重置、k8s配置重置的情况下,应当如何恢复K8s HA master集群。
2843 0
|
MySQL 关系型数据库 开发工具
|
监控 关系型数据库 MySQL