是否有一个“变量”可以查看计算机是否处于睡眠模式?

是否有一个“变量”可以查看计算机是否处于睡眠模式?

Ubuntu (14.04) 中是否有一些变量可以在 bash 脚本中读取,以了解计算机处于哪种模式(活动/睡眠/挂起)?如果是,是否还可以查看当前模式持续多长时间。

我想制作一个当计算机进入睡眠模式时运行的脚本。

对于可以告诉监视器处于哪种状态的变量,存在同样的问题。

答案1

存在/etc/pm/sleep.d经常用于运行的文件夹暂停/恢复时的脚本

典型形式如下:

#!/bin/bash

case "$1" in
    suspend)
        # executed on suspend
        ;;
    resume) 
        # executed on resume
        ;;
    *)
        ;;
esac

我建议您设置暂停选项,将暂停时间写入文件(命令date,最简单的可能是date +%s获取 Unix 纪元时间),对于恢复也是同样的想法,只是您将从文件中读取内容到变量中并计算与当前时间的差异。

像这样:

#!/bin/bash

case "$1" in
    suspend)
        # executed on suspend
        date +%s > /tmp/suspend_time.txt
        ;;
    resume) 
        # executed on resume
        suspend_time=$(< /tmp/suspend_time.txt)
        current_time=$(date +%s)
        difference=$(($current_time-$suspend_time))
        if [ $difference -gt 60  ]; # greater than 1 minute (60 seconds)
        then
             # put some kind of command you want to run here
        fi
        ;;
    *)
        ;;
esac

请注意,这只是一个草案,尚未经过测试,但这是一个可以遵循的建议。

答案2

这是不可能的。如果您的计算机处于睡眠或挂起模式,您的程序将被冻结,无法运行任何代码。如果您的程序正在运行,您的计算机将处于活动状态。

相关内容