分页: 1 / 2

如何在bash中得到或记录一个进程的开始和结束时间

发表于 : 2009-04-08 9:10
xxdaystar
本人要统计一些数据,想在bash中开启大量进程进行测试,但有个问题是如何将每个进程的具体时间记录下来? 这个时间应该要比S还要精确才行吧

Re: 如何在bash中得到或记录一个进程的开始和结束时间

发表于 : 2009-04-08 9:12
xxdaystar
另外,怎样测试进程才算是好方法?我想试一下不同的调度算法的影响。

Re: 如何在bash中得到或记录一个进程的开始和结束时间

发表于 : 2009-04-08 9:12
yaoms

代码: 全选

time command

Re: 如何在bash中得到或记录一个进程的开始和结束时间

发表于 : 2009-04-08 9:50
xxdaystar
这个不是只计算运行时间吗?

Re: 如何在bash中得到或记录一个进程的开始和结束时间

发表于 : 2009-04-08 9:57
yaoms
那就用这个:

代码: 全选

date +%s.%N
精确到纳秒 :em05

Re: 如何在bash中得到或记录一个进程的开始和结束时间

发表于 : 2009-04-08 11:55
xxdaystar
好的 试试 希望大家都提写好东西
谢谢你 :em05

prccmd1 &
date +%s.%N
prccmd2 &

如何知道中间打出来的命令是后面的开始时间呢,这样之能做一个大概的评估吧,可能后两条命令间延迟‘严重’

Re: 如何在bash中得到或记录一个进程的开始和结束时间

发表于 : 2009-04-08 12:22
xxdaystar
而且还有结束时间呢

Re: 如何在bash中得到或记录一个进程的开始和结束时间

发表于 : 2009-04-08 17:47
xxdaystar
突然想起来 我自己可以写一个程序体 在头和尾把tick打印出来,然后再装载成进程,反正都是模拟的。

现在问题是怎样打印出tick?

Re: 如何在bash中得到或记录一个进程的开始和结束时间

发表于 : 2009-04-08 17:48
xxdaystar
而且程序的调入和开始执行不是一个时间吧

Re: 如何在bash中得到或记录一个进程的开始和结束时间

发表于 : 2009-04-08 18:53
xxdaystar
gettimeofday(); 可以解决

就是另一个问题不知怎么办,如何才知道进程的被调入时间,这个时间应该和被执行第一句的时间不是一个。

Re: 如何在bash中得到或记录一个进程的开始和结束时间

发表于 : 2009-04-08 20:22
xhy
xxdaystar 写了:gettimeofday(); 可以解决

就是另一个问题不知怎么办,如何才知道进程的被调入时间,这个时间应该和被执行第一句的时间不是一个。
http://linux.chinaunix.net/bbs/viewthre ... id=1056687

Re: 如何在bash中得到或记录一个进程的开始和结束时间

发表于 : 2009-04-08 21:09
xxdaystar
xhy 写了:
xxdaystar 写了:gettimeofday(); 可以解决

就是另一个问题不知怎么办,如何才知道进程的被调入时间,这个时间应该和被执行第一句的时间不是一个。
http://linux.chinaunix.net/bbs/viewthre ... id=1056687
关键是如何将他自动化记录下来,如果一大堆的进程同时运行的话,PID号恐怕是未知的。
比如
#!/bin/bash
myproc1 &;
myproc2 &;
myproc3 &;
myproc4 &;
....



如果采用下面方法倒是可以作一个大致估计
#!/bin/bash
echo someting; date +%s.%N
myproc1 &;
echo someting; date +%s.%N
myproc2 &;
echo someting; date +%s.%N
myproc3 &;
echo someting; date +%s.%N
myproc4 &;
....

Re: 如何在bash中得到或记录一个进程的开始和结束时间

发表于 : 2009-04-08 21:15
xhy
xxdaystar 写了:
xhy 写了:
xxdaystar 写了:gettimeofday(); 可以解决

就是另一个问题不知怎么办,如何才知道进程的被调入时间,这个时间应该和被执行第一句的时间不是一个。
http://linux.chinaunix.net/bbs/viewthre ... id=1056687
关键是如何将他自动化记录下来,如果一大堆的进程同时运行的话,PID号恐怕是未知的。
比如
#!/bin/bash
myproc1 &;
myproc2 &;
myproc3 &;
myproc4 &;
....



如果采用下面方法倒是可以作一个大致估计
#!/bin/bash
echo someting; date +%s.%N
myproc1 &;
echo someting; date +%s.%N
myproc2 &;
echo someting; date +%s.%N
myproc3 &;
echo someting; date +%s.%N
myproc4 &;
....

如果你要保证每一个进程都不漏网,只有两个办法

1 所有的进程都由你创建,你可以自行写log

2 hook掉fork系统调用,和exit系统调用,你就可以知道每个进程的生存时间区间

Re: 如何在bash中得到或记录一个进程的开始和结束时间

发表于 : 2009-04-08 21:16
xhy
xhy 写了:
xxdaystar 写了:
xhy 写了:
xxdaystar 写了:gettimeofday(); 可以解决

就是另一个问题不知怎么办,如何才知道进程的被调入时间,这个时间应该和被执行第一句的时间不是一个。
http://linux.chinaunix.net/bbs/viewthre ... id=1056687
关键是如何将他自动化记录下来,如果一大堆的进程同时运行的话,PID号恐怕是未知的。
比如
#!/bin/bash
myproc1 &;
myproc2 &;
myproc3 &;
myproc4 &;
....



如果采用下面方法倒是可以作一个大致估计
#!/bin/bash
echo someting; date +%s.%N
myproc1 &;
echo someting; date +%s.%N
myproc2 &;
echo someting; date +%s.%N
myproc3 &;
echo someting; date +%s.%N
myproc4 &;
....

如果你要保证每一个进程都不漏网,只有两个办法

1 所有的进程都由你创建,你可以自行写log

2 hook掉fork系统调用,和exit系统调用,你就可以知道每个进程的生存时间区间

pid也不可能是未知的,/proc下面有所有进程的pid

Re: 如何在bash中得到或记录一个进程的开始和结束时间

发表于 : 2009-04-09 21:47
xxdaystar
xhy 写了:
xhy 写了:
xxdaystar 写了:
xhy 写了:
xxdaystar 写了:gettimeofday(); 可以解决

就是另一个问题不知怎么办,如何才知道进程的被调入时间,这个时间应该和被执行第一句的时间不是一个。
http://linux.chinaunix.net/bbs/viewthre ... id=1056687
关键是如何将他自动化记录下来,如果一大堆的进程同时运行的话,PID号恐怕是未知的。
比如
#!/bin/bash
myproc1 &;
myproc2 &;
myproc3 &;
myproc4 &;
....



如果采用下面方法倒是可以作一个大致估计
#!/bin/bash
echo someting; date +%s.%N
myproc1 &;
echo someting; date +%s.%N
myproc2 &;
echo someting; date +%s.%N
myproc3 &;
echo someting; date +%s.%N
myproc4 &;
....

如果你要保证每一个进程都不漏网,只有两个办法

1 所有的进程都由你创建,你可以自行写log

2 hook掉fork系统调用,和exit系统调用,你就可以知道每个进程的生存时间区间

pid也不可能是未知的,/proc下面有所有进程的pid
谢谢你的回答。

可能我表述得不太准确,其实我想说的是 并不是说怕漏掉,因为/proc下有所有的进程信息,只是不知道怎么将他们每个进程号与bash脚本中的未执行进程联系起来。因为一个进程在没有执行前是不知道他将得到的进程号的吧? 而且进程太短了的话恐怕连读都没来得读在/proc下就结束了..