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解决。
排查了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 |
命令
文件
变量
数组
脚本
字符
历史
文件名
环境
进程
问题
参数
名称
可变
提示符
用户
提示
运行
位置
冒号
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
魔兽世界纳克萨玛斯服务器
软件开发公司的绩效管理制度
人们对网络技术的普遍理解
山西软件开发多少钱
如何搜索代理服务器
贺州计算机网络技术学校
百旺税盘网络配置服务器连接异常
指定当前数据库实例名
软件开发怎样打广告
网络安全法对谷歌审查
非关系型数据库简写
美食美图软件开发
网络安全的案例的话剧
南京星云网络技术有限公司
小型游戏服务器开发
信用社云喇叭怎么连接服务器失败
警告服务器美国无码四虎
网络安全伟大斗争
金山区上门软件开发收费套餐
数据库网上选课课程设计
畅捷通数据库重置密码
网络安全概念观后感
excel数据库运用
数据库的备份设备可以是
阜阳轩双互联网科技有限公司
阿里云服务器信息安全等级
邯郸快例软件开发2018
戴尔服务器系统安装教程
warf网络安全
下半年网络安全工作计划