我已经部署了一个接收后 Hook 脚本,我想将整个输出日志作为以日期开头的 block 保存在一个文件中。我尝试了一种方法,但它逐行记录日志,这意味着我必须对每一行都执行该命令才能获取日志。有什么方法可以从日期开始获取整个脚本日志吗?
脚本文件如下所示:
#!/bin/bash
any_command | ts '[%F %T]' >> /home/Man/Man_log.log
second_command | ts '[%F %T]' >> /home/Man/Man_log.log
third_command | ts '[%F %T]' >> /home/Man/Man_log.log
看到我必须把这行| ts '[%F %T]' >>/home/Man/Man_log.log
针对每个命令获取日志。我有 90 行,所以这不是一个完美的方法。我需要一种有效的方法,就像我的脚本中只有一行将整个脚本的输出作为日志并将其存储到另一个从日期开始的 Man_log.log 文件中。
我想要的和这个差不多
#!/bin/bash
ts '[%F %T]' >> /home/Man/Man_log.log #a command which can store logs of every command below this to a separate file starting with date
any_command
second_command
third_command
最佳答案
可能最简单的方法是修改脚本以在每次调用时打印日期:
#!/bin/sh
date -u +"%Y-%m-%dT%H:%M:%SZ"
# your commands below
...
如果您不能修改脚本,那么您可以对命令进行分组,例如:
(date && anycommand) >> out.log
将 a(命令列表)分组在括号中会使它们被执行,就好像它们是一个单元一样。 "sub-shell "
关于linux - 是否可以记录整个脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50173276/