当应用程序时出现core dump,或分析什么函数占用CPU时,可以采用truss。
truss命令显示了应用程序对外部库和内核的调用情况。应用程序一般使用这些调用来访问网络、文件系统以及显示信息。通过观察这些调用及其结果,可以了解应用程序需要什么,并由此找到解决方案。
truss 命令执行对指定命令的跟踪,并产生对系统调用、接收的信号和进程造成的机器故障的跟踪。每行跟踪输出报告 Fault 或 Signal 名称或 Syscall 名称和参数及返回值。
Truss的缺点是只能跟踪正在被执行的function,而不能回看已经执行过的function。比如:并不能知道什么文件被锁定并阻碍下一个进程执行。因为直到打开这个文件的function call被调用,跟踪进程才能开始记录。
1、使用方法
#truss pid
2、示例
某cics程序占用CPU高。
首先,找其中一个cics的pid
#ps –ef | grep cics
执行truss
#truss -p 4325490
发现报错信息,不断重复 kill 2个进程
搜一搜kill的2个进程是什么
amqzlaa0是队列管理器代理
amqzxma0是处理控制器, The execution controller is the first job started by the queue manager. Deals with MQCONN requests。