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

sh/bash/dash/ksh/zsh等Shell脚本
头像
xxdaystar
帖子: 225
注册时间: 2006-07-28 14:58
来自: 廣州

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

#1

帖子 xxdaystar » 2009-04-08 9:10

本人要统计一些数据,想在bash中开启大量进程进行测试,但有个问题是如何将每个进程的具体时间记录下来? 这个时间应该要比S还要精确才行吧
头像
xxdaystar
帖子: 225
注册时间: 2006-07-28 14:58
来自: 廣州

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

#2

帖子 xxdaystar » 2009-04-08 9:12

另外,怎样测试进程才算是好方法?我想试一下不同的调度算法的影响。
头像
yaoms
帖子: 4952
注册时间: 2007-10-19 14:51
来自: 深圳

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

#3

帖子 yaoms » 2009-04-08 9:12

代码: 全选

time command
Nothing 有事请发邮件到 yms541 AT gmail.com
alias 爱慕颇雷尔='mplayer'
头像
xxdaystar
帖子: 225
注册时间: 2006-07-28 14:58
来自: 廣州

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

#4

帖子 xxdaystar » 2009-04-08 9:50

这个不是只计算运行时间吗?
头像
yaoms
帖子: 4952
注册时间: 2007-10-19 14:51
来自: 深圳

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

#5

帖子 yaoms » 2009-04-08 9:57

那就用这个:

代码: 全选

date +%s.%N
精确到纳秒 :em05
Nothing 有事请发邮件到 yms541 AT gmail.com
alias 爱慕颇雷尔='mplayer'
头像
xxdaystar
帖子: 225
注册时间: 2006-07-28 14:58
来自: 廣州

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

#6

帖子 xxdaystar » 2009-04-08 11:55

好的 试试 希望大家都提写好东西
谢谢你 :em05

prccmd1 &
date +%s.%N
prccmd2 &

如何知道中间打出来的命令是后面的开始时间呢,这样之能做一个大概的评估吧,可能后两条命令间延迟‘严重’
头像
xxdaystar
帖子: 225
注册时间: 2006-07-28 14:58
来自: 廣州

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

#7

帖子 xxdaystar » 2009-04-08 12:22

而且还有结束时间呢
头像
xxdaystar
帖子: 225
注册时间: 2006-07-28 14:58
来自: 廣州

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

#8

帖子 xxdaystar » 2009-04-08 17:47

突然想起来 我自己可以写一个程序体 在头和尾把tick打印出来,然后再装载成进程,反正都是模拟的。

现在问题是怎样打印出tick?
上次由 xxdaystar 在 2009-04-08 17:51,总共编辑 1 次。
头像
xxdaystar
帖子: 225
注册时间: 2006-07-28 14:58
来自: 廣州

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

#9

帖子 xxdaystar » 2009-04-08 17:48

而且程序的调入和开始执行不是一个时间吧
头像
xxdaystar
帖子: 225
注册时间: 2006-07-28 14:58
来自: 廣州

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

#10

帖子 xxdaystar » 2009-04-08 18:53

gettimeofday(); 可以解决

就是另一个问题不知怎么办,如何才知道进程的被调入时间,这个时间应该和被执行第一句的时间不是一个。
头像
xhy
帖子: 3916
注册时间: 2005-12-28 1:16
系统: Ubuntu 12.10 X64
来自: 火星

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

#11

帖子 xhy » 2009-04-08 20:22

xxdaystar 写了:gettimeofday(); 可以解决

就是另一个问题不知怎么办,如何才知道进程的被调入时间,这个时间应该和被执行第一句的时间不是一个。
http://linux.chinaunix.net/bbs/viewthre ... id=1056687
目前负债150多万
头像
xxdaystar
帖子: 225
注册时间: 2006-07-28 14:58
来自: 廣州

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

#12

帖子 xxdaystar » 2009-04-08 21:09

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 &;
....
头像
xhy
帖子: 3916
注册时间: 2005-12-28 1:16
系统: Ubuntu 12.10 X64
来自: 火星

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

#13

帖子 xhy » 2009-04-08 21:15

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系统调用,你就可以知道每个进程的生存时间区间
目前负债150多万
头像
xhy
帖子: 3916
注册时间: 2005-12-28 1:16
系统: Ubuntu 12.10 X64
来自: 火星

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

#14

帖子 xhy » 2009-04-08 21:16

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
目前负债150多万
头像
xxdaystar
帖子: 225
注册时间: 2006-07-28 14:58
来自: 廣州

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

#15

帖子 xxdaystar » 2009-04-09 21:47

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下就结束了..
回复