体验 AIX 系统 truss 工具魅力
前言
truss是aix系统下一个非常好用的命令。它可以用来跟踪系统调用、动态装入的用户级函数调用、接收的信号和造成的机器故障等。每行跟踪输出报告fault或者signal名称或者syscall名称和参数及返回值。
第一个例子
aix系统中有个功能非常强大的sar命令,可以用来监控系统资源使用情况。遗憾的是对于普通非管理员或者管理员同组的用户该命令是无法使用的。普通用户执行sar -d 1 1命令会得到如下输出:
test1:/>sar: The file access permissions do not allow the specified action
但是查看sar命令文件权限默认权限如下:
对所有用户权限是一致的。所以sar命令文件本身权限不是导致命令不可用的原因。
下面我们就用truss命令来查看普通用户不能使用该命令的原因以及解决方法。
切换至普通用户执行truss sar -d 1 1命令可看到如下输出,截取其中一部分。
从输出中我们可以看到上面输出中出现如下字段
access("/usr/lib/sa/sadc", 01) Err#13 EACCES
访问/usr/lib/sa/sadc文件时出现Err#13 EACCES报错。该报错代码解释我们可以查看系统/usr/include/errno.h中的定义,定义如下:
可见当前普通用户访问该权限被拒绝。我们再查看一下该文件的权限:
显示其他用户对该文件目录没有rx权限。接下来我们尝试修改该文件权限给test1用户赋予一个rx权限。
test1@xxhjibm0401:/home/test1>chmod o+rx /usr/lib/sa/sadc
再次确认新权限,
接下来普通用户再次执行sar命令:
ok执行成功。
备注: 系统出入安全考虑默认可执行权限只放给了特权用户。本文仅用于举例展示.不建议更改权限.想了解更多相关权限信息的,参考IBM “Security”相关红皮书。
第二个例子
曾经管理的一套系统,当时有反馈应用异常。登录主机执行topas查看系统各项资源均正常,查看系统各项指标,也没有任何性能瓶颈。出于习惯,按照cpu,内存,io等顺序采集并查看详细信息。
首先采集了一个30秒的系统进程cpu消耗情况:
Tprox –x sleep 30截取部分内容如下:
从中明显看出/usr/bin/amqcrsta的应用进程占用系统cpu异常,几乎全部为kernel占用。接下来用truss跟踪一下进程看进程的工作情况。
Truss –p 3788942输入如下:
该进程报了一个err#11 EAGAIN (Resource temporarily unavailable)的错误。然后程序每隔400毫秒等待激活,陷入死循环情况。
ps –ef|grep 3788942进程如下
是应用MQ的一个进程异常.联系应用人员应急处理并重启MQ后恢复正常。
来自社区“平台人生”专栏
http://www.talkwithtrend.com/Column/detail/id/11
更多相关文章请点击阅读原文
长按二维码关注公众号