千家信息网

linux使用top重定向生成文本时command列被截取的问题

发表于:2024-11-27 作者:千家信息网编辑
千家信息网最后更新 2024年11月27日,数据库服务器上部署有oswbb监控,在一次故障发生时,发现其top监控中command列只有简略的命令,比如ckpt或者LOCAL=NO的oracle进程的command都显示为oracle,不能分辨
千家信息网最后更新 2024年11月27日linux使用top重定向生成文本时command列被截取的问题数据库服务器上部署有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解决。


$*将所有命令行参数当做单个文本值包含
$@将所有命令行参数当做独立的文本值包含
$#命令行参数数目
$?最近使用的前端进程的退出状态码
$-当前命令选项标记
$$当前shell的进程ID(PID)
$!最近执行的后台进程PID
$0来自命令行的命令名称
$_shell的绝对路径名
BASH用来调用shell的全文件名
BASH_ARGC当前子函数中的参数数目
BASH_ARGV含有所有指定命令行参数的数组
BASH_COMMAND当前正在被执行的命令的名称
BASH_ENV如果设置了的话,每个bash脚本都会尝试在运行前执行由这个变量第一的起始文件
BASH_EXECUTION_STRING在-c命令行选项中用到的命令
BASH_LINENO含有脚本中每个命令的行号的数组
BASH_REMATCH含有与指定正则表达式匹配的文本元素的数组
BASH_SOURCE含有shell中已声明函数所在源文件的名称的数组
BASH_SUBSHELL当前shell产生的子shell数目
BASH_VERSION当前bash shell实例的版本号
BASH_VERSINFO含有当前bash shell实例的主版本号好次版本号的可变数组
COLUMNS含有当前bash shell实例使用的终端的终端宽度
COMP_CWORD含有当前光标位置的变量COMP_WORDS的索引值
COMP_LINE当前命令行
COMP_POINT当前光标位置相对于当前命令起始位置的索引
COMP_WORDS含有当前命令行上所有的单词的可变数组
COMPREPLY含有由shell函数生成的可能填充字的可变数组
DIRSTACK含有目录栈当前内容的可变数组
EUID当前用户的数字有效用户ID
FCEDITfc命令使用的默认编辑器
FIGNORE冒号分隔的文件名补全时要忽略的后缀名列表
FUNCNAME当前执行的shell函数的名称
GLOBIGNORE以冒号分隔的模式列表,定义了文件名展开时要忽略的文件名集合
GROUPS含有当前用户属组列表的可变数组
histchars控制历史记录展开的字符,最多有3个字符
HISTCMD当前命令在历史记录中的位置
HISTCONTROL控制哪些命令留在历史记录列表中
HISTFILE保存shell历史记录列表的文件名(默认是 .basj_history)
HISTFILESIZE在历史记录中保存行数的上限
HISTIGNORE冒号分隔的用来决定哪些命令不存进历史文件的模式列表
HISTSIZE最多在历史文件中保存多少条记录
HOSTFILE含有shell在补全主机名时读取的文件的名称
HOSTNAME当前主机的名称
HOSTTYPE当前运行bash shell的机器
IGNOREEOFshell在退出前必须收到连续EOF字符的数量,如果不存在这个值,默认是1
INPUTRCreadline初始文件名(默认是 .inputrc)
LANGshell的语言环境分类
LC_ALL定义个语言环境变量,覆盖LANG变量
LC_COLLATE设置对字符串值排序时用的对照表顺序
LC_TYPE决定在文件名展开和模式匹配时用字符如何解释
LC_MESSAGES决定解释前置美元符($)的双引号字符串的语言环境变量
LINENO脚本中当前执行的行号
LINES定义了终端上可见的行数
MACHTYPE用"cpu-公司-系统"格式定义的系统类型
MAILCHECKshell多久查看一次新邮件(以秒为单位,默认是60)
OLDPWDshell之前的工作目录
OPTERR设置为1时,bash shell会显示getopts命令产生的错误
OSTYPE定义了shell运行的操作系统
PIPESTATUS含有前端进程的退出状态码列表的可变数组
POSIXLY_CORRECT设置了的话,bash会已POSIX模式启动
PPIDbash shell父进程的PID
PROMPT_COMMAND设置了的话,在命令行主提示符显示之前会执行这条命令
PS1主命令行提示符字符串
PS2次命令行提示符字符串
PS3select命令的提示符
PS4如果使用bashde -x参数,在命令行显示之前显示的提示符
PWD当前工作目录
RANDOM返回一个0~32767的随机数;对其赋值可作为随机数生成器的种子
REPLYread命令的默认变量
SECONDS自动shell启动到现在的描述;对其赋值将会充值计数器
SHELLOPTS冒号分割的打开的bash shell选项列表
SHLVL表明shell级别,每次有新bash shell(启动自增)
TIMEFORMAT指定了shell显示时间值的格式
TMOUTselect和read命令在没输入的情况下等待多久(以秒为单位)。默认为零,表示无限长
UID当前用户的真实用户ID

0