gpt4 book ai didi

linux - bash 输出 gulp watch 到多个文件,然后用 tail -f 显示输出

转载 作者:太空宇宙 更新时间:2023-11-04 12:08:08 25 4
gpt4 key购买 nike

在 centos 6 虚拟盒子上,我试图在多个目录上运行 gulp watch,将其输出到 2 个文件。一个文件用于每个目录,另一个文件用于所有目录。所以取下面的数组;

directories=(
'local.site1.com'
'local.site2.co.uk'
)

我想遍历这个,然后总共创建3个文件;

  1. local.site1.com-gulp.log
  2. local.site2.co.uk-gulp.log
  3. all-gulp.log

如果我对站点 1 中的文件进行更改,更改将记录在 site1.log 和 all-gulp.log 中,然后对于站点 2 也是如此,它应该记录到 site2.log 和 all-gulp.log .所以每个站点都有它自己的日志,但我可以在一个文件中看到所有站点的输出。所有文件都应附加日志。

有了这个文件后,我希望能够运行命令 tail -f/path/to/all-gulp.log 这样我就可以看到这个过程的实时输出在两个目录上运行。

我的尝试如下

#!/bin/bash

directories=(
'local.site1.com'
'local.site2.co.uk'
)


for dir in ${directories[@]}
do
cd /var/www/$dir
gulp watch | tee -a /var/log/gulp/$dir-gulp.log /var/log/gulp/all-gulp.log

done

tail -f /var/log/gulp/all-gulp.log

更新以上已修改。将最后一行设为 tail -f 命令(我发誓我之前尝试过)确实为我提供了该过程的运行输出,但仍然没有迹象表明站点 2 发生了任何事情。没有创建文件,也没有当我在站点 2 上保存文件时运行输出(文件应该触发编译)

我正在尝试使用单个 bash 脚本甚至可能吗?

最佳答案

如果您真的想要它,使用 Bash 脚本一切皆有可能。

我可能弄错了,但您似乎忘记了并行运行进程。第二个进程没有运行,因为 Bash 只是在等待第一个进程完成(它从来没有这样做过)。

尝试在tee命令的末尾添加一个&来并行启动进程,并在循环后添加一个wait命令阻塞直到它们都完成。

编辑:不过,我不确定 tee 的并行执行是否附加到同一个文件。如果双方同时修改文件,可能会出现竞争条件的情况。您可能需要查看 parallel 命令来处理来自并行进程的缓冲输出。

关于linux - bash 输出 gulp watch 到多个文件,然后用 tail -f 显示输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49898758/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com