You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CentOS 6虚拟机中Gulp Watch多目录日志输出配置问询

没问题,这个需求用bash脚本就能轻松实现,核心是用tee命令把gulp的输出同时写到两个日志文件,再配合循环和后台运行来处理多个目录。我给你写个完整的脚本,再拆解下关键部分:

完整实现脚本
#!/bin/bash

# 定义需要监控的目录数组
directories=( 'local.site1.com' 'local.site2.co.uk' )

# 可选:清空汇总日志(如果希望每次运行从头记录,注释掉则追加)
> all-gulp.log

# 遍历每个目标目录
for dir in "${directories[@]}"; do
    # 先检查目录是否存在,避免报错
    if [ -d "$dir" ]; then
        echo "启动gulp watch监控目录: $dir"
        # 用子shell进入目录执行命令,避免影响脚本全局工作目录
        # 2>&1 把错误输出也合并到标准输出,确保错误日志也能写入文件
        # tee -a 同时追加内容到单个目录日志和汇总日志
        # & 让每个gulp进程在后台运行,不阻塞循环
        (cd "$dir" && gulp watch 2>&1 | tee -a "../${dir}-gulp.log" "../all-gulp.log") &
    else
        echo "警告:目录 $dir 不存在,跳过该目录"
    fi
done

# 可选:等待所有后台gulp进程结束(如果需要脚本一直保持运行状态)
wait
echo "所有gulp watch监控进程已在后台启动"
关键部分解释
  • 2>&1:把gulp的错误输出(比如编译失败、配置错误)也重定向到标准输出,这样错误信息会和正常日志一起写入文件,不会丢失。
  • tee -a:tee命令的作用是把输入同时输出到多个目标,-a参数表示以追加模式写入,避免每次启动都覆盖之前的日志内容。这里我们同时指定了单个目录的日志文件和汇总日志文件。
  • 子shell(cd "$dir" && ...):用括号包裹命令会启动一个子shell,进入目标目录执行gulp后,子shell结束不会影响脚本本身的工作目录,避免后续循环出错。
  • 后台运行&:每个gulp watch进程会在后台执行,这样循环可以继续处理下一个目录,不会被第一个gulp进程阻塞。
  • wait命令:如果希望脚本一直保持运行状态(比如放在screen或者nohup里),加上wait可以让脚本等待所有后台gulp进程结束后再退出。
注意事项
  • 确保每个目标目录下都存在有效的gulpfile.js,并且已经安装了所需的gulp依赖(可以提前在每个目录里执行npm install)。
  • 如果需要停止所有监控进程,可以用命令:pkill -f gulp(谨慎使用,会杀掉所有名为gulp的进程)。
  • 日志文件会生成在脚本所在的目录下,如果需要指定其他路径,可以修改../${dir}-gulp.log和../all-gulp.log中的路径。

内容的提问来源于stack exchange,提问作者Novocaine

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 06:39:05