数据库服务器上部署有oswbb监控,在一次故障发生时,发现其top监控中command列只有简略的命令,比如ckpt或者LOCAL=NO的oracle进程的command都显示为oracle,不能分辨出到底是oracle的什么进程出了问题。为了让其显示完整的command,更改了其xtop.sh脚本文件,增加了-c选项。手工运行xtop脚本,观察生成的文件,满足了要求。但是在oswbb自己调用中出现了问题,command列被截取了,一行的长度最大80个字符。
排查了oswbb中的脚本,没有发现有截取命令
怀疑是环境变量的问题,因为手工运行没问题,脚本自动调用有问题,脚本使用nohup来调用xtop,nohup调用经常会出现环境变量问题,网上查了下shell的默认环境变量,找到了COLUMNS这个变量,通过set查看当前的环境变量,可以看到COLUMNS=189,在xtop.sh脚本中设置export COLUMNS=189解决。
排查了oswbb中的脚本,没有发现有截取命令
怀疑是环境变量的问题,因为手工运行没问题,脚本自动调用有问题,脚本使用nohup来调用xtop,nohup调用经常会出现环境变量问题,网上查了下shell的默认环境变量,找到了COLUMNS这个变量,通过set查看当前的环境变量,可以看到COLUMNS=189,在xtop.sh脚本中设置export COLUMNS=189解决。
$* | 将所有命令行参数当做单个文本值包含 |
$@ | 将所有命令行参数当做独立的文本值包含 |
$# | 命令行参数数目 |
$? | 最近使用的前端进程的退出状态码 |
$- | 当前命令选项标记 |
$$ | 当前shell的进程ID(PID) |
$! | 最近执行的后台进程PID |
$0 | 来自命令行的命令名称 |
$_ | shell的绝对路径名 |
BASH | 用来调用shell的全文件名 |
BASH_ARGC | 当前子函数中的参数数目 |
BASH_ARGV | 含有所有指定命令行参数的数组 |
BASH_COMMAND |