我在Jenkins中运行了很长时间(几个小时)的Rsync备份任务
Rsync
将进度输出打印到日志。在查看终端时 - 最后一行是“令人耳目一新”,即它不断地打印在自己身上。但是当Jenkins运行任务时 - 它没有显示该信息。
这是我在Jenkins中看到的,当任务正在运行时:
这就是我看到的,在它完成之后(这就是我想要看到的,在它运行时):
sending incremental file list
35-openMeet-flat.vmdk
131,072 0% 0.00kB/s 0:00:00
9,437,184 0% 8.88MB/s 1:38:26
21,757,952 0% 10.30MB/s 1:24:49
32,899,072 0% 10.40MB/s 1:23:58
44,302,336 0% 10.49MB/s 1:23:12
55,443,456 0% 10.92MB/s 1:19:55
66,191,360 0% 10.56MB/s 1:22:40
78,118,912 0% 10.73MB/s 1:21:17
如何配置Jenkins在任务运行时打印完整输出 ?
P.S。我很高兴,即使我需要找到并观看一些Jenkins日志文件。但目前我找不到任何东西。 例如,我试过这个:
slavik@ubhome:/var/lib/jenkins/jobs/backup ESXI VM/builds/34$ tail log
sending incremental file list
35-openMeet.vmdk
532 100% 0.00kB/s 0:00:00 (xfr#1, to-chk=0/1)
sent 434 bytes received 41 bytes 190.00 bytes/sec
total size is 532 speedup is 1.12
Comparing file sizes...
Sizes are different, calculating delta checksums, can take a while, time for a coffee...
sending incremental file list
35-openMeet-flat.vmdk
slavik@ubhome:/var/lib/jenkins/jobs/backup ESXI VM/builds/34$
但正如您所看到的,它不会显示带有进度数据的最后一行。看起来它保存在RAM中,并且在它真的是新行之前不会写入磁盘。
答案 0 :(得分:3)
确实这是一年多了,但我偶然发现了这个问题,希望找到答案。如果做不到这一点,我设法找到了一个解决方案,并认为我将分享其余的互联网。
你想要做的是“unbuffer”rsync命令。有几个项目可以“解除”事情(unbuffered,expect的unbuffer
命令),但这些对我来说并不适合。 unbuffered很接近,但在我的日志中抛出了一堆我不想要的换行符(在使用-c
标志后,无法避免重复的行)。
最终工作的是this:使用链接中找到的标记通过stbuf管理我的rsync命令。现在我的jenkins控制台很漂亮,并且跟上rsync的进度:
rsync -avz --progress <source> <destination> | stdbuf -oL tr '\r' '\n'