Mac OS 电源管理及 pmset 命令(转)

最近在用mac时发现一个问题,晚上正在上传或者下载的程序在电脑自动省电时会被关闭,第二天发现文件只上传了一半。想mac一定会有一个命令行的电源管理工具,在网上找到了下边文章,拿来分享。方便作服务器开发的朋友可以自已使用程序控制mac系统的电源使用。
转自:
http://www.crazy-code.tech/index.php/2017/02/25/mac-os-power-managment-and-pmset/

pmset 都能干什么

这个工具可以设置和列出电量管理的设置。一部分功能在“节能偏好”面板中通过图形界面的形式提供出来。然而,pmset 预留的一些更加灵活的选项并不适用于图形界面。

它可以根据使用情况设置不同的电量管理设定。当机器正在充电、使用电池、UPS 或者三者全都有的情况下,可以应用不同的设定。下面是相关的标记:

  • -c 调节设定用于连接充电器的时候
  • -b 调节设定用于使用电池的时候
  • -u 调节设定用于使用 UPS 的时候
  • -a 调节设定用于全部情景
  • 具体的内容会在下面的 pmset 命令手册中详细描述。

    pmset 命令手册

    正如前面讲的一样,这个命令在 mac 系统里是自带的,在终端直接输入 man pmset 可以直接翻出手册来看,如果你比较懒,可以下面我翻的这个精简版的。附上原文地址:PMSET,这个命令是基于 Mac OS X version 10.9,不过这种命令应该不会有太多变化。

    命令名称

    pmset,操纵电源管理设置。熟悉 unix 或者 linux 的同学都知道,命令的起名都是很有讲究的,比如这个 pmset 看起来很怪,其实就是 power managment settings 的缩写。

    概述

    pmset [-a | -b | -c | -u] [setting value] [...]
    pmset -u [haltlevel percent] [haltafter minutes] [haltremain minutes]
    pmset -g [option]
    pmset schedule [cancel] type date+time [owner]
    pmset repeat cancel
    pmset repeat type weekdays time
    pmset relative wake seconds
    pmset [touch | sleepnow | displaysleepnow | lock | boot]
    

    描述

    pmset 管理电源设置,像空闲睡眠时间,当管理员访问时唤醒,断电自动重启等等。

    注意,这个过程可以通过使用 IO 电源断言动态的覆盖。无论何时程序覆盖任何系统电源设置, pmset 将列出那些程序以及他们的电源断言

    使用情景

    pmset 可以修改任意电源管理设置以下定义的值。你可以在命令行中使用 pmset 指定至少一个情景-值对。-a-b-c-u 标记设置是否应用到电池(-b),充电(-c),UPS(-u) 或者全部(-a)。

    使用一个 0 的分钟参数来设置空闲时间,绝不睡眠,硬盘睡眠和显示器睡眠。

    pmset 必须由 root 用户运行来修改任何的设置。

    设置信息

    • displaysleep – 显示器睡眠计时器;替换 10.4 版本中的 dim 参数(值为分钟,或者设置 0 来禁用)。
    • disksleep – 硬盘降速计时器;替换 10.4 版本中的 spindown 参数(值为分钟,或者设置 0 来禁用)。
    • sleep – 系统睡眠计时器(值为分钟,或者设置 0 来禁用)。
    • womp – 通过以太网唤醒(值为 1 或者 0)
    • ring – 通过调制解调器环境(值为 1 或者 0)
    • autorestart – 当电量损耗时自动重启(值为 1 或者 0)
    • lidwake – 当笔记本打开盖子的时候唤醒机器(值为 1 或者 0)
    • acwake – 当电源(AC 或者电池)改变的时候唤醒机器(值为 1 或者 0)
    • lessbright – 当切换电源时,略微调低显示器亮度(值为 1 或者 0)
    • halfdim – 显示器睡眠将使用在最大亮度和关闭显示器之间的中间亮度(值为 1 或者 0)
    • sms – 当重力突然改变时,使用瞬时运动传感器来停止磁盘头(值为 1 或者 0)
    • hibernatemode – 改变休眠模式。请小心使用(值为整数)
    • hibernatefile – 改变休眠镜像文件位置。镜像应该只被定为到根卷中。请小心使用(值为路径)
    • ttyskeepawake – 当任何 tty(如:远程登录会话) 在活动状态时,阻止系统空闲睡眠。tty 只能是非活动 当它的空闲时间超过系统睡眠计时器(值为 1 或者 0)
    • networkoversleep – 这个设置影响 OS X 在系统睡眠时如何联网。这个设置不被全平台使用,不支持修改这个值。
    • destroyfvkeyonstandby – 当变为待机模式时销毁文件库密钥。默认地,当系统待机时密钥被保留。如果关键文件被销毁,将导致当用户退出待机模式时输入密码(值为 1 – 销毁 ,0 – 保留)
    • autopoweroff – 系统将写入休眠镜像并且进入到低电量芯片组睡眠。从这个状态唤醒所花的时间要比普通休眠唤醒的时间要长。如果有外部设备连接,系统不会自动切断电源,如果系统使用电池供电,或者系统被绑定在网络并且通过网络访问被唤醒功能开启。
    • autopoweroffdelay – 进入自动切断电源模式的延迟(值为表示分钟的整数)

    显示信息

    • -g(不带参数) 显示当前正在使用的设置
    • -g live 显示当前正在使用的设置
    • -g custom 显示为所有电源的自定义设置
    • -g cap 显示机器支持哪些电力管理功能
    • -g sched 显示计划启动、唤醒或关闭、睡眠事件
    • -g ps / batt 显示电池和 UPS 的状态
    • -g pslog 显示电源(电池或者 UPS)状态的连续日志
    • -g rawlog 显示直接读取电池的电池状态的连续日志
    • -g therm 显示影响 CPU 速度的热力条件。不适用于全部平台
    • -g thermlog 显示影响 CPU 速度的热量的通知日志。不适用于全部平台
    • -g assertions 显示电量断言的概要。断言可以阻止系统睡眠或显示器睡眠。适用于 10.6 及更新版本
    • -g assertionslog 显示电量断言的创建及释出日志。适用于 10.6 及更新版本
    • -g sysload 显示“系统负载顾问”——。适用于 10.6 及更新版本
    • -g ac/adapter 显示关于交流电源适配器的详情。只有 MacBoook 和 MacBook Pro 支持。
    • -g log 显示睡眠,唤醒及其他电源管理时间的历史。这个日志只提供给管理员和调试目的
    • -g uuid 显示当前活跃的睡眠、唤醒的 UUID。
    • -g uuidlog 显示当前活跃的睡眠、唤醒的 UUID,并且打印一个新的被系统设置的 UUID
    • -g history 一个调试工具。当使用启动参数 io=0x3000000 被启用时,打印系统睡眠唤醒的 UUID 的时间线。
    • -g powerstate 打印当前为 IO Kit 驱动电源状态。调用者应该至少提供一个 IO Kit 类名来作为参数。如果没有类名被听过,它将打印全部驱动的电源状态。
    • -g powerstatelog 
    • -g stats 打印自系统启动以来睡眠和唤醒系统的计数。
    • -g systemstate 打印当前系统的电量状态和可用能力。
    • -g everything 打印每个参数。这是一个有用的快速收集所有 pmset 提供的输出。适用于 10.8。

    安全睡眠参数

    hibernatemode 有一个位字段参数来定义安全睡眠能力。通过 0 来禁用安全睡眠,强制计算进入普通睡眠。

    • ____ ___1 (bit 0) 开始休眠,注意 OS X 写内存状态到休眠镜像在睡眠的时候。当唤醒时,OS X 将从休眠镜像中恢复。位 0 设置引起 OS X 写内存状态并且立刻休眠在睡眠时间。
    • ____ __1_ (bit 1) 
    • ____ 1___ (bit 3)
    • ___1 ____ (bit 4)

    我们不推荐修改休眠设置。你做的任何改变都不被支持。如果你一定要这么做,我们推荐使用以下三种设置其中之一。为了保证你的利益,请不要使用除了了 0,3,25 以外的设置。

    • hibernatemode = 0 台式机默认支持。系统将不会备份内存到持久化存储。系统必须从内存内容中唤醒;当断电时系统将会失去上下文。这是传统的普通睡眠方式。
    • hibernatemode = 3 便携式计算机默认支持。系统将存储一份内存的备份到持久化存储(磁盘)中,并且在睡眠过程中持续给内存供电。系统将从内存中被唤醒,除非断电才强制从磁盘镜像会恢复。
    • hibernatemode = 25 只能通过 pmset 才可以设置。系统将存储一份内存的备份到持久化存储(磁盘)中,并且将会给内存断电。系统将从磁盘镜像中恢复。如果你希望“休眠”——慢一点但是有益电池寿命,你应该使用这个设置。

    待机参数

    standby 使得机器在睡眠了一段指定的时间间隔后,核心电源管理会自动休眠机器。通过睡眠来节电。这个设置默认在被支持的硬件环境下是默认开启的。如果这个功能被机器支持,standby 设置在 pmset -g 命令中是可见的。

    • standby 只有 hibernate 被设置为 3 或者 25 时才工作。
    • standbydelay 指定一个以秒为单位的延迟,在写入休眠镜像到磁盘并且内存断电之前。

    UPS 详细参数

    调度事件参数

    pmset 允许你调度系统睡眠,关机,唤醒以及电源开启。“schedule”是设置一次电源事件的,“repeats”用来设置每日或者每周的电源开启及关闭事件。注意,你只能定义一对重复事件的调度——“power on” 事件或者“power off”事件。对于睡眠周期的应用,pmset 可以调度一个

    电源参数

    • -g 后面跟随一个 batt 或者 ps 参数将显示全部电源的状态。
    • -g 后面跟随 pslog 或者 rawlog 参数通常被用来调试,比如隔离一个老旧电池的问题。

    其他参数

    • boot 告诉内核系统启动完成。对于 Darwin 用户来说可能很有用。
    • force 告诉 PM 立刻激活这些设置。不要写入到磁盘,并且设置可以简单地被重写。在 PM 配置插件没有运行的情况下很有用。
    • touch PM 从磁盘中重新读取已存在的设置。

    用例

    这个命令设置了在使用电池电量的情景下,显示器睡眠倒计时为 5 分钟,保留电池上的其他设定并且其他电源不受影响

    pmset -b displaysleep 5

    设置显示器睡眠倒计时为 10 分钟,磁盘睡眠倒计时为 10 分钟,系统睡眠倒计时为 30 分钟,并且为全部电源情景(交流电,电池和 UPS)启动 WakeOnMagicPacket。

    pmset -a displaysleep 10 disksleep 10 sleep 30 womp 1

    恢复系统的能源设定为默认值。

    对于一个附带并支持 UPS 的系统来说,这指示系统在 UPS 电池电量低于 40% 的时候要紧急关闭。

    pmset -u haltlevel 40

    对于一个附带并支持 UPS 的系统来说,下面这条指令指示了系统在 UPS 电池电量低于 25% 或者 UPS 预估可用时间少于 30 分钟时要紧急关闭。这两个条件满足一个就会执行系统关闭。

    pmset -u haltlevel 25 haltremain 30

    对于一个附带并支持 UPS 的系统来说,这个指令指示当系统使用 UPS 电池时在两分钟后关闭系统。

    pmset -u haltafter 2

    系统计划于 2016 年 7 月 4 日 20:00 的时候自动从睡眠中唤醒。

    pmset schedule wake "07/04/16 20:00:00"

    系统计划在每周的周二到周六上午 11 点钟关闭。

    pmset repeat shutdown TWRFS 11:00:00

    计划在每周二的中午 12 点唤醒或供电,并且在每天晚上 8 点钟睡眠。

    pmset repeat wakeorpoweron T 12:00 sleep MTWRFSU 20:00:00

    打印系统在使用的电量管理设定

    pmset -g

    打印此刻的电池或电源的状态快照。

    pmset -g batt

    如果你的系统在使用电池供电的使用还有 20-50% 剩余电量时突然睡眠,请在终端窗口中运行下面这个命令。当你看到问题和,你将能够检测到老化电池的突然不连续电量(比如突然从 30% 降到 0%)。

    pmset -g pslog

    总结

    基于上面学习和整理出的内容来看,发生在我的 Mac 上的情况还是很正常的情况,所以也不打算修改 pmset 中的电源参数了,虽然没有怎么折腾,但是确实学到不少有意思的知识,这就算没白忙活。(完)

    参考文章

    1. pmset apple 在线文档
    2. Mac 帮助
    3. pmset wiki 页面

你可能感兴趣的:(开发环境)