LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 2698|回复: 11

如何编个脚本自动确定程序的运行时间呢?

[复制链接]
发表于 2003-1-3 19:17:46 | 显示全部楼层 |阅读模式
我有个计算程序运行时间很长,2、3天吧,如何编个脚本自动确定他的运行时间呢?

起初我是这样做的,在运行程序之前用date +%s 记录起始时间,程序完成之后再执行date +%s一遍,然后两个一减就得计算所耗时间了。

后来我发现运行两个这样的程序时,用top查看运行时间并非实际时间。例如两个任务的其中一个是星期2晚上投的,也就是到现在运行了三天了,但top显示此程序运行时间为2912分钟,就是2天(另一任务已于昨天算完,现在又投了一个新的任务)

我想top显示的是不是只运行一个程序应该消耗的时间?

我本想,如果让shell自动保存top计算的程序运行时间的话,可以用
top | grep '程序名' 〉file
然后第一行和最后一行的时间段一减就可得到,可惜这样会让top一直运行着,消耗较多的cpu时间,不划算

有没有其他简便的方法呢?
发表于 2003-1-3 20:22:15 | 显示全部楼层
程序的第一行把当前时间输入文件
最后一行再把时间输入文件
 楼主| 发表于 2003-1-3 20:46:49 | 显示全部楼层
不对呀,这样的话和我原来的方法有什么差别呢?这样只是实际运行时间,不是top里显示的时间啊!
发表于 2003-1-4 08:33:35 | 显示全部楼层
shell 中的每个程序都是一个新的进程,光关心一个进程所耗的
CPU时间似乎没什么意义
发表于 2003-1-4 09:05:43 | 显示全部楼层
你可以在命令前加 time 让它帮你统计进程所耗的时间
 楼主| 发表于 2003-1-4 09:51:44 | 显示全部楼层
我用的这个程序需要计算好多天,写在shell中的其他命令只是为这个程序准备输入文件和处理他的输出文件,步骤繁琐但是用shell来执行却只要几秒钟,所以我只关心着这一个进程的cpu时间了

多谢lins兄的帮助
 楼主| 发表于 2003-1-4 12:06:12 | 显示全部楼层
怎么不能将time的结果重定向到文件中呢?我的机器中好像只有-p可以用,其他的选项如-o不能用?

$ time -p df -k >d
real 3.73
user 0.15
sys 0.50
--------------------------------
$ time -o d df -k
bash: -o: command not found

real    0m0.001s
user    0m0.000s
sys     0m0.000s
发表于 2003-1-5 11:35:08 | 显示全部楼层

能不能帮忙找一个关于time命令的全面的介绍

同时要包含一些引用的例子,中文的最好,小弟在这先谢谢啦
发表于 2003-1-5 19:51:01 | 显示全部楼层
有那么复杂吗???!!!
//脚本
date     //显示要开始的时间?/!
commands //要运行的语句
date     //语句结束时的时间!
顺便问问在shell中如何使用数学表达式???
发表于 2003-1-5 19:54:37 | 显示全部楼层
[javalee@Linux javalee]$ time ls
111         evolution                         lx               sb
c           infomation                        lx1              shella.txt
class1.gif  j2re-1_4_1_01-linux-i586-rpm.bin  lx2              shellb.txt
class2.gif  j2re.bin                          mw               speed
class3.gif  java                              myfile1          t.png
class4.gif  java.gif                          pic
Desktop     linsir.gif                        sa
doc         linuxconf-1.29r3-1.i386.rpm       sambaconfigfile

real    0m0.021s  //?
user    0m0.004s  //?
sys     0m0.006s  //?
我运行$time ls   //应该是显示运行ls命令的时间吧?
请高手解释//?代表的含义!
谢谢!!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表