我最近发布了这个帖子:每次计算机从休眠状态唤醒时运行一个 python 脚本
我正在考虑倒计时的替代方法,即简单地在控制台上显示命令再次运行之前的剩余时间。
例如这个脚本
import os
os.system("watch -n 50 COMMAND")
控制台显示每 50 秒运行一次:COMMAND 那么您知道一种显示这 50 秒实际状态的方法吗?
我最近发布了这个帖子:每次计算机从休眠状态唤醒时运行一个 python 脚本
我正在考虑倒计时的替代方法,即简单地在控制台上显示命令再次运行之前的剩余时间。
例如这个脚本
import os
os.system("watch -n 50 COMMAND")
控制台显示每 50 秒运行一次:COMMAND 那么您知道一种显示这 50 秒实际状态的方法吗?
我认为除非COMMAND
创建一些信息(例如执行后的时间戳或类似信息),否则没有办法。原因很简单:watch
simple 进入nanosleep()
系统调用等待 50 秒。(您可以使用 找到它strace
。)这nanosleep()
除了等待 50 秒之外什么也没做。它在任何地方都没有提供任何关于睡眠已经持续了多长时间或还需要多长时间的信息。该信息深藏在内核内部,内核最终将再次唤醒该进程。
因此,您唯一的方法是COMMAND
渲染该信息,例如通过让它接触一个时间戳文件(例如touch /tmp/COMMAND.timestamp
),然后可以使用该文件的时间间接确定下一次睡眠何时可能完成。
直接地?不,手表不会暴露这一点。相反,您必须让手表更频繁地运行并自己处理检查,如下所示:
import os
os.system("watch -n 1 'let \"x = $(date +%s)%50\";echo $x; if [ $x -eq 0 ]; then COMMAND ; fi'")
您可能希望根据echo $x
自己的喜好格式化。