当前位置: 首页 > 编程笔记 >

shell脚本实现监控shell脚本的执行流程及变量的值

魏晨
2023-03-14
本文向大家介绍shell脚本实现监控shell脚本的执行流程及变量的值,包括了shell脚本实现监控shell脚本的执行流程及变量的值的使用技巧和注意事项,需要的朋友参考一下

很多时候,我们都会写shell程序来完成一些不用重复造轮子的时刻,但是,又因为shell语句中也会有函数,也会有变量,在运行后到底执行了哪些相关的操作,就需要对具体执行过程中的变量等可变的因素的监控,那么我们下面就写个小小的shell例子,来完成这个对执行过程中条件语句中的变量的变化的监控和整个程序的执行流程的观察。

shell程序代码:


#!/bin/bash

function setlogfile

{

    if ! [ -z "$1" ]; then

        echo "logfilename is not empty!" >> kthh

        exec 2>> $1

        exec 1>> $1

    fi    

}

num1=$1 logfile=$2 execlogfile=$3

setlogfile ${execlogfile} set -x if [ $num1 -eq 0 ]; then     echo "num1 is 0">> ${logfile} elif [ $num1 -ge 0 ]; then     echo "num1 is grate 0">> ${logfile} else     echo "num1 is less 0">> ${logfile} fi /sbin/shutdown -k 10 if [ $num1 -eq 0 ]; then     echo "num1 is 0 again">> ${logfile} fi


在命令行中执行:

[root@UFO shellprogram]# ./testexecutelog.sh 0 msglog execlog


在以上的shell脚本程序中 num1对应的值为命令行中的0  logfile的值为msglog  execlogfile的值为execlog。

函数 setlogfile的使用为 setlogfile 日志文件名,在例子中的使用setlogfile ${execlogfile},函数中的exec 2>> $1;exec 1>> $1表示把标准输出和标准错误输出的信息都重定向到execlog文件中。

下面我们来看看execlogfile中的内容,就可以看到shell程序的执行流程和执行过程中的变量的值的变化。


[root@UFO shellprogram]# cat execlog 

+ '[' 0 -eq 0 ']'

+ echo 'num1 is 0'

+ /sbin/shutdown -k 10

+ '[' 0 -eq 0 ']'

+ echo 'num1 is 0 again'


可见,程序中的流程是和./testexecutelog.sh后的第一个参数决定的。你还可以把第一个html" target="_blank">参数改为大于0的或小于0的值进行测试。

其中,最重要的一句是set -x,此句的含义为:在每个简单命令被扩展之后,显示PS4扩展值,之后是要执行的命令 。 若不执行这句,则不会将执行中变量的实际值打印到execlog中。有关set的使用可man set了解更多。

注意:exec 在对文件描述符进行操作的时候,也只有在这时,exec 不会覆盖你当前的 shell 环境。也即是不会启动个新的进程。

 类似资料:
  • 问题内容: 我尝试谷歌搜索答案,但没有运气。 我需要使用我的超级计算机服务器,但是要运行我的python脚本,必须通过shell脚本执行。 例如我要执行 如何做到这一点? 问题答案: 只需确保python可执行文件在PATH环境变量中,然后在脚本中添加 细节: 在文件job.sh中,放入 执行此命令以使脚本可运行: 运行 :

  • 本文向大家介绍Shell脚本实现监控iptables运行状态,包括了Shell脚本实现监控iptables运行状态的使用技巧和注意事项,需要的朋友参考一下 最近在调试服务器的iptables,自己做了个定时关iptables,但晚上回家很少开电脑,所以就没法去启动iptables,当然你可能会说,为什么不取消定时关闭iptables,我只能说个人的环境不一样,需求也就不一样. 脚本内容: vi i

  • 问题内容: 我想从PHP脚本执行系统上存在的Bash脚本。我的系统上有两个脚本。其中一个是称为at at 的PHP脚本,另一个是称为at at 的Bash脚本。 我的client.php脚本看起来像 我的睾丸看起来像 当我在终端上执行以下操作时 我在终端上得到以下输出 但是当我在打开页面时 我得到以下输出 即使执行了chmod + x testscript,我仍然收到此错误。 我如何从浏览器中获取

  • 本文向大家介绍shell脚本实现磁盘监控系统,包括了shell脚本实现磁盘监控系统的使用技巧和注意事项,需要的朋友参考一下 利用shell脚本实现每隔60秒磁盘内存数据监控 效果如图: 以上就是shell脚本实现磁盘监控系统的详细内容,更多关于shell 磁盘监控的资料请关注呐喊教程其它相关文章!

  • 本文向大家介绍linux进程监控shell脚本代码,包括了linux进程监控shell脚本代码的使用技巧和注意事项,需要的朋友参考一下 为确保php页面在后台运行,写了一个监控脚本,假设程序异常退出,那么可以自动重启。 shell脚本/usr/local/scripts/receve.sh内容: 需要保证监控脚本正常运行,在每天凌晨自动重启脚本/usr/local/scripts/restart_

  • 问题内容: 我有一个读取输入的Shell脚本 我正在使用JAVA APi执行此Shell脚本 在Java控制台中,我可以看到输出 键入要检查的年份(4位数字),然后按[ENTER]: 现在,如何将值传递到我脚本中的Shell脚本中的实际问题是如何读取变量“ year” 我已经按照建议编辑了代码,但在我们更正的地方无法正常工作 问题答案: 要将执行脚本的Java程序中的值传递给脚本,请使用命令行参数