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解决。
文章名称:linux使用top重定向生成文本时command列被截取的问题
文章地址:http://ybzwz.com/article/gjdgic.html
排查了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 |
FCEDIT | fc命令使用的默认编辑器 |
FIGNORE | 冒号分隔的文件名补全时要忽略的后缀名列表 |
FUNCNAME | 当前执行的shell函数的名称 |
GLOBIGNORE | 以冒号分隔的模式列表,定义了文件名展开时要忽略的文件名集合 |
GROUPS | 含有当前用户属组列表的可变数组 |
histchars | 控制历史记录展开的字符,最多有3个字符 |
HISTCMD | 当前命令在历史记录中的位置 |
HISTCONTROL | 控制哪些命令留在历史记录列表中 |
HISTFILE | 保存shell历史记录列表的文件名(默认是 .basj_history) |
HISTFILESIZE | 在历史记录中保存行数的上限 |
HISTIGNORE | 冒号分隔的用来决定哪些命令不存进历史文件的模式列表 |
HISTSIZE | 最多在历史文件中保存多少条记录 |
HOSTFILE | 含有shell在补全主机名时读取的文件的名称 |
HOSTNAME | 当前主机的名称 |
HOSTTYPE | 当前运行bash shell的机器 |
IGNOREEOF | shell在退出前必须收到连续EOF字符的数量,如果不存在这个值,默认是1 |
INPUTRC | readline初始文件名(默认是 .inputrc) |
LANG | shell的语言环境分类 |
LC_ALL | 定义个语言环境变量,覆盖LANG变量 |
LC_COLLATE | 设置对字符串值排序时用的对照表顺序 |
LC_TYPE | 决定在文件名展开和模式匹配时用字符如何解释 |
LC_MESSAGES | 决定解释前置美元符($)的双引号字符串的语言环境变量 |
LINENO | 脚本中当前执行的行号 |
LINES | 定义了终端上可见的行数 |
MACHTYPE | 用“cpu-公司-系统”格式定义的系统类型 |
MAILCHECK | shell多久查看一次新邮件(以秒为单位,默认是60) |
OLDPWD | shell之前的工作目录 |
OPTERR | 设置为1时,bash shell会显示getopts命令产生的错误 |
OSTYPE | 定义了shell运行的操作系统 |
PIPESTATUS | 含有前端进程的退出状态码列表的可变数组 |
POSIXLY_CORRECT | 设置了的话,bash会已POSIX模式启动 |
PPID | bash shell父进程的PID |
PROMPT_COMMAND | 设置了的话,在命令行主提示符显示之前会执行这条命令 |
PS1 | 主命令行提示符字符串 |
PS2 | 次命令行提示符字符串 |
PS3 | select命令的提示符 |
PS4 | 如果使用bashde -x参数,在命令行显示之前显示的提示符 |
PWD | 当前工作目录 |
RANDOM | 返回一个0~32767的随机数;对其赋值可作为随机数生成器的种子 |
REPLY | read命令的默认变量 |
SECONDS | 自动shell启动到现在的描述;对其赋值将会充值计数器 |
SHELLOPTS | 冒号分割的打开的bash shell选项列表 |
SHLVL | 表明shell级别,每次有新bash shell(启动自增) |
TIMEFORMAT | 指定了shell显示时间值的格式 |
TMOUT | select和read命令在没输入的情况下等待多久(以秒为单位)。默认为零,表示无限长 |
UID | 当前用户的真实用户ID |
文章名称:linux使用top重定向生成文本时command列被截取的问题
文章地址:http://ybzwz.com/article/gjdgic.html