【问题标题】:How to print build logs in parallel if running build script from another shell script如果从另一个 shell 脚本运行构建脚本,如何并行打印构建日志
【发布时间】:2014-08-01 10:19:24
【问题描述】:

如何打印从我并行运行的脚本执行的另一个脚本生成的日志。

基本上,我正在运行一个脚本,该脚本运行另一个脚本来启动构建,并且我希望并行查看编译日志,因为我可以在直接运行构建脚本时看到它。

我们还可以打印命令在 shell 脚本中运行多长时间的时间。就像我想知道到目前为止我的构建花了多少时间。

PS:我是脚本新手,如果之前在任何线程中回答过这个问题,请重定向我,因为我无法在 SO 中找到它:)

【问题讨论】:

  • 如果你创建一个服务器就可以了。也许db 也可以。
  • 你的意思是一半屏幕显示构建,一半显示日志?右上角可能有时间?
  • @Jidder:是的,实际上我只需要查看构建日志。这些是 2 个单独的查询,但如果我可以有时间进行构建,那就太好了。有什么建议可以实现吗?
  • 构建脚本当前将输出发送到哪里?标准输出?另外,除了启动构建脚本之外,包装脚本还有什么作用?
  • 嗨@RishabhSagar,包装脚本只需要一些参数,根据参数和一些变量,它会启动适当的构建脚本。构建日志也被重定向到另一个文件,我可以从另一个 shell 跟踪它,但我希望它在同一个控制台中。我只是想写一个简单的脚本,它接受构建开始的参数。原始构建脚本与编译日志配合得很好。

标签: bash shell unix scripting build-automation


【解决方案1】:

您可以通过拖尾日志在当前屏幕上显示您的构建脚本。

test2.sh(构建脚本)

#!/bin/bash
#test2.sh

# Save start time of script
startTime=$SECONDS

# Save outputs to log
echo "line 1" > /tmp/log
sleep 2
echo "line 2" >> /tmp/log
sleep 2
echo "line 3" >> /tmp/log
sleep 2
echo "line 4" >> /tmp/log

# Calculate total elapsed time in seconds
echo "Elapsed seconds: $(($SECONDS - $startTime))" >> /tmp/log
exit 0

test.sh(运行时脚本)

#!/bin/bash
#test2.sh

echo "Starting test2.sh"
sh test.sh &
scriptPid=$!

# tail the build script logs. Exit on $scriptPid
tail -n0 -F --pid=$scriptPid /tmp/log 2>/dev/null

wait $scriptPid
exit 0;

现在只需运行 test.sh 即可显示 test2.sh 的输出日志

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-31
    • 2010-11-24
    • 2015-06-09
    • 2012-07-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多