`
scm002
  • 浏览: 317015 次
社区版块
存档分类
最新评论

shell脚本调试 -- 运行日志2

 
阅读更多

http://blog.csdn.net/gsnumen/article/details/7265641

 

shell脚本调试 -- 运行日志1

 
本文主要描述如何输出shell脚本中的debug日志.
 

C/C++的debug日志

    在C/C++中有 __FILE__, __func__, __LINE__ 来表示 当前这行日志来自哪个源代码文件的第几行的哪个函数.
如:
#include<stdio.h> 
/* t.c */

int main()
{
    printf("%s:%d:%s:DEBUG Hello World!\n", __FILE__, __LINE__, __func__);
    return 0;
}
/* 运行结果如下:
    $> make t
    cc t.c -o t
    $> ./t
    t.c:6:main:DEBUG Hello World!
    $> 

 */
t.c:6:main:DEBUG Hello World! 是在说, 这行信息来至 t.c 文件的第 6 行的 main 函数,这种方法可以让你在调试过程中很快的定位问题的位置.

 

shell脚本中的debug日志

 
    使用 alias 功能, 实现类似C/C++中的debug日志方法. 将文件保存到 /etc/mydebug
#!/bin/bash 
# mydebug
# Aliases are not expanded when the shell is not interactive, unless the
#+ expand_aliases shell option is set using shopt
shopt -s expand_aliases

case "$1" in
    "debug")
        alias mydebug='echo -n $(caller 0|tr " " ":"):$FUNCNAME:$LINENO:LOG:" "';
        ;;
    *)
        alias mydebug='';
        ;;
esac
 
测试:
#!/bin/bash 
# mydebug_test.sh

source /etc/mydebug debug; #如果带参数就是 debug 模式, 不带任何参数为非debug模式.

function check_apache()
{
    echo "$(mydebug)apache [OK]"
}

function check_mysql()
{
    echo "$(mydebug)mysql [OK]"
}

function check_all()
{
    check_apache;
    check_mysql;
}

check_all;
 
debug模式的运行结果:
$> /bin/bash mydebug_test.sh
18:check_all:mydebug_test.sh:check_apache:8:LOG: apache [OK]
19:check_all:mydebug_test.sh:check_mysql:13:LOG: mysql [OK]
$>
 
非debug模式的运行结果:
$> /bin/bash mydebug_test.sh 
apache [OK]
mysql [OK]
 
 

------------- end -------------
From: GS
-------------------------------

分享到:
评论

相关推荐

    Shell脚本调试技术

    ### Shell脚本调试技术 在IT领域中,Shell脚本是一种强大的工具,广泛应用于Unix/Linux系统管理、自动化任务处理等领域。然而,随着脚本复杂度的增加,如何有效地调试Shell脚本成为了一项挑战。本文将详细介绍几种...

    PyPI 官网下载 | cloudshell-app-helper-1.0.5.tar.gz

    4. **错误处理和日志记录**:为了提高代码的健壮性和可维护性,此库可能包含异常处理机制和日志记录功能,方便开发者调试和监控应用的运行状态。 5. **配置管理**:可能提供配置文件读取和写入的功能,帮助用户保存...

    Linux Shell调试技术

    #### 二、Shell脚本调试技术介绍 为了更好地解决逻辑错误,Shell提供了多种调试工具和技术,其中包括`trap`、`tee`、调试钩子和Shell选项等。 ##### 1. `trap`命令 `trap`是Linux中的一个内置命令,主要用于捕获...

    linux下批量执行oracle脚本的shell脚本

    `说明.txt` 文件可能是对整个过程的详细说明,包括如何运行shell脚本,脚本的工作原理,以及可能遇到的问题和解决方案。阅读这份说明有助于理解脚本的使用方法和潜在问题。 执行Oracle SQL脚本的shell脚本通常包含...

    shell脚本.pdf

    2. **命令行参数**:Shell脚本可以接收命令行参数,这些参数在脚本内部可以通过$1, $2, ... 来访问。$0代表脚本本身的名称。了解如何处理这些参数是编写实用脚本的关键。 3. **输入输出重定向**:Shell脚本支持标准...

    shell脚本学习指南

    3. **执行脚本**:要运行Shell脚本,需赋予脚本执行权限(`chmod +x scriptname.sh`)然后通过`./scriptname.sh`执行。 二、Shell脚本语法 1. **变量**:Shell中的变量无需预先声明,直接赋值即可。如`NAME="John...

    shell 脚本抓取android logcat和kernel log,以及删除旧的log

    在Android系统中,logcat和kernel log是两个重要的日志系统,它们记录了系统的运行状态、错误信息和其他调试数据。shell脚本则是Linux/Android环境中进行自动化任务的强大工具。本篇将详细介绍如何利用shell脚本来...

    Linux运维-运维工具箱-18个 Shell脚本经典案例-视频1-2.zip

    这个压缩包"Linux运维-运维工具箱-18个 Shell脚本经典案例-视频1-2.zip"提供了18个实用的Shell脚本示例,适合初学者和有经验的运维人员学习参考。通过观看视频1-2,我们可以深入理解这些脚本的设计思路和应用场景。 ...

    shell脚本学习指南pdf

    **Shell脚本学习指南** Shell脚本是一种在Unix/Linux操作系统中使用的编程语言,它允许用户通过命令行界面执行一系列操作,实现自动化任务处理。作为学习Shell脚本的指南,这本书籍旨在帮助读者深入理解Shell脚本...

    linux shell脚本

    2. **Shell脚本结构** - **脚本开头**:通常以`#!/bin/bash`作为脚本的首行,告诉系统使用哪个Shell解释器来运行脚本。 - **变量声明**:在脚本中,可以声明并赋值变量,如`VAR="value"`。 - **命令执行**:使用...

    linux下101个shell脚本

    在Linux操作系统中,Shell脚本是一种强大的工具,用于自动化日常任务、管理系统以及执行一系列命令。"Linux下101个shell脚本"是一份宝贵的资源,涵盖了从基础到高级的各种shell脚本示例,对于想要深入学习Linux ...

    Shell脚本学习指南.pdf

    Shell脚本本质上就是一系列的Shell命令,它们被写入到一个文本文件中,然后通过执行这个文件来运行这些命令。在“Shell脚本学习指南”中,你可能会学到以下内容: 1. **基础语法**:包括变量定义、赋值、环境变量、...

    发现服务不打日志进行重启shell脚本.txt

    ### 发现服务超过一个小时不打日志进行重启Shell脚本详解 #### 背景介绍 在运维领域,为了确保应用程序或服务的稳定运行,通常会编写一系列的监控脚本来实时监测服务的状态。当发现服务异常时(比如长时间未产生...

    编写Shell脚本

    在IT行业中,Shell脚本是Linux和Unix操作系统中不可或缺的一部分,尤其对于系统管理员和开发者而言,熟练掌握Shell脚本编写技巧至关重要。标题“编写Shell脚本”表明我们要深入探讨这一主题,而描述则强调了Shell...

    PyPI 官网下载 | cloudshell-octopus-deploy-4.1.80.zip

    5. **错误处理和日志记录**:为了提高调试和问题排查的效率,该库提供了完善的错误处理机制,并支持日志记录,方便开发者追踪和分析部署过程中出现的问题。 在实际使用中,解压后的文件"cloudshell-octopus-deploy-...

Global site tag (gtag.js) - Google Analytics