作者sexyrickysky (花心只是掩饰内心的空虚)
看板Linux
标题[问题] 如何得知程式至目前为止已运行的时间
时间Mon Jan 13 22:02:03 2014
想请问一下,有何指令可以得知目前指令已经执行的时间?
我目前使用某一套科学计算程式於高速电脑上执行平行计算。
不过因为该伺服器的PBS排程软体有WALL TIME的限制,
只要程式的执行时间,超过WALL TIME,伺服端将会强制终止运算。
不过因为有时後所要计算的系统十分庞大,
於WALL TIME的限制内可能依然无法计算完成。
因此必须於WALL TIME限制前,先将所执行的计算程式停止,
以免某些计算的结果遗失。
然而,该程式时是以script的方式提交。
提交出去後,该程式并不会被马上执行,而是要看当前伺服器的排程状况,
有空的资源该程式才会被执行。
至於等待排程需要多久的时间,事实上并无法准确的估计,
快则三小时,慢则三天以上都有遇过。
所以并无法以script的提交时间和当前的时间差值,
作为程式已经被执行的时间。
因此我希望能写一个script,
包含以下几个功能,
Part 1.
可以於scirpt递交出去後,
每隔一个固定的间格时间(e.g 2HR)就侦测程式是否已经执行,
或是依然在排程中。
Part 2.
若侦测到程式已经开始执行,
则开始侦测,程式至目前为止已经执行了多少时间,
并且於接近WALL TIME的前两个小时,下达指告知程式保存档案後停止运行。
Part 3.
待程式停止运作後,判断是否已达到所要求的收敛精度,
若没有则自动更改相关参数,重新递交工作,直至达到所求为止。
我目前为止已将script的第三部份写了出来,
但是,我不知道有什麽样的指令可以固定时间就侦测该程式是否已被执行,
以及如何得知程式直至目前为止已经运行了多久?
我有查到linux系统里的 time指令可以得知某一指令所运行的总时间,
不过这个与我想要的功能有所差异,
因为time指令只能等到该程式全部运行完後,
才会告知使用者该指令执行的时间,而非显示"程式至目前为止已经执行了多久"
因此,想请问一下,
有怎样的指令或函数可以达到上面所提到的part 1 与 part 2的功能
--
永远不要以为自己考上研究所後有多了不起,
硕一生,充其量也只是去年刚毕业的大学生。
而大学生,也只是会打B的小学生,可以考上高中的国中生,
指考有报名的高中生而已..........
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.136.176.152
1F:→ fjm31714:执行的时候取得 pid 然後用 ps 查? 01/13 22:09
2F:→ bitlife:执行环境是Linux有支援/proc吗? 若是, /proc/[pid]/stat 01/13 23:38
5F:→ sexyrickysky:太感谢了!!明天早上进办公室就来研究 01/14 00:05