linux-watch命令:显示剩余时间

时间:2013-07-25 09:46:16

标签: python linux watch

我最近发布了这个主题:run a python script everytime the computer wakes up from hibernation

我正在考虑倒计时的另一种选择,即在控制台上显示剩余的时间,直到命令再次运行。

例如使用此脚本

import os
os.system("watch -n 50 COMMAND")

控制台显示每50秒运行一次:命令 所以你知道一种显示50秒实际状态的方法吗?

2 个答案:

答案 0 :(得分:0)

我认为除非COMMAND创建一些信息(例如执行后的时间戳或类似信息),否则没有办法。原因很简单:watch simple进入nanosleep()系统调用等待50秒。 (您可以使用strace找到它。)此nanosleep()除了等待50秒之外别无其他。它不提供任何关于睡眠已经持续多长时间或者仍需要多长时间的信息。这些信息深埋在内核中,最终会再次唤醒进程。

所以,你唯一的办法是让COMMAND呈现那些信息,例如: G。通过让它触摸时间戳文件(例如touch /tmp/COMMAND.timestamp),其时间可用于间接确定下一次睡眠可能完成的时间。

答案 1 :(得分:0)

直接?不,手表不暴露。 相反,你必须让手表更频繁地运行并自己处理检查,如下所示:

import os
os.system("watch -n 1 'let \"x = $(date +%s)%50\";echo $x; if [ $x -eq 0 ]; then COMMAND ; fi'")

您可能希望根据自己的喜好格式化echo $x