linux - 在 Bash 脚本中创建日志

标签 linux bash file logging status

有两个shell脚本:A.sh和B.sh

另一个脚本 C.sh 将创建一个包含以下内容的日志:

  • 主机名
  • 用户名
  • 脚本名称
  • 函数执行时间
  • 功能说明
  • 状态

Example:

<My hostname>
<My username>

A.sh
12:09:00 p.m "Initialize shell" OK
12:10:00 p.m. "Creating file" OK
12:11:00 p.m. "Creating backup" FAIL

B.sh
01:00:00 p.m "Initialize shell" OK
01:01:00 p.m. "Creating file" FAIL
01:02:00 p.m. "Creating backup" FAIL

重点是获取每个函数的成功/失败状态和执行时间,并将其全部保存到日志文件中。如何检查 shell 中每个函数的状态?

最佳答案

1最简单的方法是将脚本的输出刷新到独立文件中,然后将此日志文件包含到由 C.sh 生成的公共(public)文件中。 您可以在 A.sh、B.sh 中使用 tee *nix 函数来填充日志文件并仅过滤您需要的记录。 此外,还可以通过 set +o errexitset +o pipefail 获取脚本中的错误,然后在函数执行后立即检查函数执行状态:

set +o errexit
func.sh param1 param2
if [ $? -ne 0 ] ; then
    echo "FAIL" | tee 1.txt
    exit 1 # if you need interrupt execution
else
    echo "OK" | tee 1.txt
fi

关于linux - 在 Bash 脚本中创建日志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24991133/

相关文章:

linux - 数字验证在 Linux shell 脚本中无法正常工作

c++ - 了解 bash 中程序使用的内存(在 ubuntu linux 中)

c++ - 如何使用文件路径进行函数调用?

java - Centos中Apache Tomcat如何设置JAVA_HOME?

linux - 无法读取 APIC 定时器寄存器

bash - 为什么 `ls | cat` != `ls` ?

javascript - 在现代浏览器中删除文件

python - 将类保存到二进制文件中 - Python

linux - 批量重命名图片为文件夹名+序号

c++ - 使用 NULL 句柄调用 dlsym() 不会返回 NULL,而是返回一个随机函数