Articles of 时间

我怎么能暂停,然后恢复呼叫`睡眠`

调用sleep(10)意味着睡眠指定的秒数。 当我input“睡眠10”时,我想等待10秒钟,但是当我在睡眠命令之后立即使用CTRL-Z(或发送SIGTSTP )时,它不会停止“定时器”(或计数器),即使进程已经停止。 我可以通过jobs看到sleep已经改变为STOPPED但是如果我等待10秒,然后将这个过程发送到前台,它将立即完成 ,即使它运行的时间less于10秒。 所以,我的问题是如何停止睡眠定时器运行? 更新 ::我现在明白,睡眠是使用挂钟时间,所以我怎么能用一个用户cpu时间来实现睡眠

用户时间大于实时

我以某种方式得到我的程序下面的时间戳。 我明白,如果涉及到IO,实时可能会比用户时间和系统时间的总和还要大,但是如果单独使用时间大于实时,您将如何解释 real 0m8.512s user 0m8.737s sys 0m1.956s

使用CLOCK_MONOTONIC的Android(Linux)正常运行时间

根据Android开发人员参考, uptimeMillis()返回自启动以来的毫秒数, 不计算在深度睡眠中花费的时间 。 我检查了我的代码中的uptimeMillis()的实现,它大致是这样的 – struct timespec t; t.tv_sec = t.tv_nsec = 0; clock_gettime(CLOCK_MONOTONIC, &t); return (int64_t)(t.tv_sec)*1000000000LL + t.tv_nsec; 据我所知, CLOCK_MONOTONIC从包括睡眠时间在内的一些非指定的点 CLOCK_MONOTONIC计数。 这是我的怀疑 – 如果CLOCK_MONOTONIC包含睡眠时间, uptimeMillis()怎么没有考虑到它? 如果我的理解是错误的, CLOCK_MONOTONIC不考虑睡眠,那么我应该使用什么来获得包括睡眠在内的系统正常运行时间? 什么是深度睡眠? CPU空闲是否被称为深度睡眠? Linux中未指定点的价值是什么? 你能指出在这个时钟开始的代码吗?

如何使C计时器在Linux中的特定系统时间到期

我正在尝试创build一个取决于系统时钟的定时器。 这意味着当系统时间改变时,它也会影响这个定时器的到期时间。 所以我想,创build一个基于CLOCK_REALTIME计时器应该做的伎俩。 但是,当这个定时器在60秒之后到期,并且当我使系统时钟提前32秒(使用date命令)时,定时器恰好在60秒之后过期。 它并没有在32秒前到期。 所以我计算了CLOCK_REALTIME和CLOCK_MONOTONIC时钟在2个定时器到期之间的时间。 它显示了CLOCK_REALTIME的92秒和CLOCK_MONOTONIC的60秒,这让我很惊讶,基于CLOCK_REALTIME的计时器没有查找系统时钟的变化。 任何人都可以解释这种行为? #include <stdio.h> #include <signal.h> #include <time.h> #include <string.h> #include <sys/time.h> timer_t timerID; struct timespec rt1, rt2, mt1, mt2; void TimerCalback() { clock_gettime(CLOCK_REALTIME, &rt1); clock_gettime(CLOCK_MONOTONIC, &mt1); printf("%lu sec elapsed for CLOCK_REALTIME\n", rt1.tv_sec – rt2.tv_sec); printf("%lu sec elapsed for CLOCK_MONOTONIC\n", mt1.tv_sec – mt2.tv_sec); rt2 = rt1; mt2 = mt1; […]

从后台进程redirectstdout&stderr

我有一个名为foo的脚本运行程序a.exe,并将计时统计信息发送到文件time.log #!/bin/bash date 1>> time.log (time ./a.exe) 2>> time.log 如果我在terminal的后台运行脚本,并保持我的shell打开,直到a.exe完成,但如果我在后台运行脚本并退出我的terminal(a.exe需要很长时间才能运行) foo & exit 当我回来,a.exe已经执行,但时间统计信息不会出现在我的日志文件。 有人知道为什么吗? 是否有一种方法可以在closures父shell之后获取计时统计信息? 谢谢

如何在bash脚本中存储“time”函数输出的子string

所以bash的内置时间函数应该以这种格式输出 real 0m0.002s user 0m0.001s sys 0m0.000s 我想要以毫秒为单位保存用户的时间,如001这是干净的方式吗?

linux时间命令导致真正的小于用户

当我在linux下testing一个perl脚本并使用time sh -c来测量花费的时间时,我得到了一个奇怪的结果: real 14m11.903s user 34m39.319s sys 16m54.074s 这意味着实时花费甚至比用户时间less。 而且我自己在视觉上统计时间,剧本花了不到34分钟,实时更接近我所看到的。 有没有人有任何线索? 谢谢。

用于分布式时间同步的NTP有多好?

NTP在保持一组服务器时间同步方面有多精确? 我正在写一个服务,需要一组服务器(一些作为客户端,一些作为服务器)同步到二级粒度。 我想知道NTP是最好用的,还是有更好的? 我应该在其中之一运行一个ntp服务器,并让其他人使用它作为他们的来源? 有NTP的其他build议/恐怖故事? 所有的服务器是Linux。 更新:服务级别: 我希望一个服务器是准确的UTC(二级,而不是微秒或这样),我希望所有其他服务器是一样的ts作为一台服务器,无论是否准确UTC或不(事件被这个服务器从不同的时间间隔接收到,我要求所有这些事件处于相同的“相对”时间。不,我不能让主服务器TS进入事件,因为那样会需要存储一个偏移量(当事件实际发生和logging时,这需要大量额外的工作),而且这些事情不必要的复杂化。 我目前已经build立了一台服务器作为第2层时间服务器,在其他服务器上使用一些startum 1 GPS源作为ntp.conf中的服务器,我已经把这台服务器设置为ntp.conf中唯一的服务器。 我希望这将是足够的。 谢谢!

“less”命令显示输出的时间

我有一个产生大量输出的脚本。 脚本在T点暂停几秒钟。 现在我正在使用less命令来分析脚本的输出。 所以我执行./script | less ./script | less 。 我让它运行足够的时间,以便脚本将完成执行。 现在我按下Pg Down键来查看less命令的输出。 令人惊讶的是,当在输出的T点处滚动时,我注意到几秒钟的停顿。 脚本没有期望任何input,并且在我开始分析输出的时候肯定会完成。 有人可以解释一下,当脚本完成执行时,几秒钟的停顿是如何显示在输出中的?

在shell脚本中获取规范时区名称

有没有从Linux shell脚本获取规范时区名称的方法? 例如,如果我configuration的时区是PDT,那么我想获得“America / Los_Angeles”。 我知道我可以从符号连接/ etc / localtime得到,如果它被configuration,但因为它可能没有configuration在所有的服务器我不能依靠那个。 另一方面,我可以使用命令date +%Z得到短时区名称,但是我仍然需要规范名称。 有没有办法获得当前时区的规范名称,或者转换使用date +%Z命令获取的时区,即使没有设置符号链接/ etc / localtime?