linux - 是否可以记录整个脚本?

标签 linux bash

我已经部署了一个接收后 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/

相关文章:

regex - SED 中的多行替换

linux - mosquitto-client 获取拒绝连接

java - 当我在 Linux 中启动 Spring Boot 应用程序作为系统服务时,日志文件没有生成?

python - Shell 脚本从终端调用 Python 但从 Cron 调用失败

bash - 捕获远程脚本的退出代码?

linux - 用于批量重命名文件夹中文件的 Shell/Bash 快捷方式

mysql - Unix。命令。替换包含\n 的表达式。数据库从 Sybase 迁移到 MySQL。 Windows-Unix 纯文本编码

linux - 为什么在 fusionmp 中将 d_type 移位 12 位

c - 移动所有线程以使用其他 CPU 核心,以便一个线程可以使用其他 CPU 核心?

bash - 来自 cat 输入的多线程 xargs