我有一个调用另一个shell脚本B的shell脚本A.
以某种方式调用shell脚本B需要很长时间才能真正开始执行。大约20秒左右。
我通过在被调用的shell脚本的第一行上执行echo date
来确认这一点。可能是什么问题?我不确定我能看到什么。
调用图很简单
echo "Just Started Executing A" `date`
. B
echo "Just Finished Executing A" `date`
echo "Just Started Executing B" `date`
输出
Just Started Executing A Thu Nov 20 02:31:33 ADT 2014
Just Started Executing B Thu Nov 20 02:31:58 ADT 2014
Just Finished Executing A Thu Nov 20 02:31:58 ADT 2014
我使用time命令来测量调用脚本B所花费的时间,分布就是这样。
real 0m25.56s
user 0m17.12s
sys 0m0.27s
我已确认服务器上没有CPU或内存不足。
| CPU-Utilisation-Small-View ==========qEntitledCPU= 7.00 UsedCPU= 2.609==============================================q|
|Logical CPUs 0----------25-----------50----------75----------100 |
|CPU User% Sys% Wait% Idle%| | | | | |
| 0 21.5 22.0 0.0 56.5|UUUUUUUUUUsssssssssss > | |
| 1 31.5 19.0 0.0 49.5|UUUUUUUUUUUUUUUsssssssss > |
| 2 40.0 32.5 0.0 27.5|UUUUUUUUUUUUUUUUUUUUssssssssssssssss > | |
| 3 33.0 1.0 0.0 66.0|UUUUUUUUUUUUUUUU > | |
| 4 21.5 27.5 0.0 51.0|UUUUUUUUUUsssssssssssss > | |
| 5 37.5 5.0 0.0 57.5|UUUUUUUUUUUUUUUUUUss > | |
| 6 9.0 16.5 0.0 74.5|UUUUssssssss > | |
| 7 0.5 4.5 0.0 95.0|ss > | |
| 8 0.0 0.0 0.0 100.0| > | |
| 9 0.0 0.0 0.0 100.0| > | |
| 10 0.0 0.0 0.0 100.0| > | |
| 11 0.0 0.0 0.0 100.0| > | |
| 12 0.0 0.0 0.0 100.0| > | |
| 13 0.0 0.0 0.0 100.0|> |
请指导。
答案 0 :(得分:0)
这个问题得到了解决。这就是我做的事情。 当这个过程花了很长时间才开始时,我注意到它的PID。为了让我更容易,它作为顶级进程出现在topas中,所以我可以毫无问题地获得PID。
我做了一个killl -6来生成一个核心转储,并在花费这么长时间时找出进程正在做什么。核心转储说了这个。
IOT/Abort trap in . at 0x10006c3c
0x10006c3c (???) 80410014 lwz r2,0x14(r1)
(dbx) where
sh_done_15_8(??, ??) at 0x10006c3c
read(??, ??, ??) at 0xd0385ed4
io_readbuff(??) at 0x1000467c
**hist_eof() at 0x10016db4
hist_open() at 0x100173f4**
item(??) at 0x100247a0
term(??) at 0x10024ce8
list(??) at 0x10024bdc
sh_cmd(??, ??) at 0x10024e5c
sh_cmd(??, ??) at 0x10024f10
sh_parse(??, ??) at 0x10025970
sh_eval(??) at 0x1001bf10
b_dot(??, ??) at 0x1001ba60
xec_builtin(??, ??, ??, ??, ??, ??) at 0x1001e24c
xec_switch(??, ??, ??, ??, ??) at 0x1001e760
sh_exec(??, ??, ??) at 0x10020078
exfile() at 0x10001750
main(??, ??) at 0x1000092c
凭直觉,我检查了用户的历史文件,这是巨大的。大约500 MB。
删除了历史文件...... VOILA !!!问题得到了解决。