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列被截取的问题-创新互联
网页URL:http://www.jxjierui.cn/article/ceojpo.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列被截取的问题-创新互联
网页URL:http://www.jxjierui.cn/article/ceojpo.html


咨询
建站咨询
