10 个版本 (6 个重大变更)
使用旧的 Rust 2015
0.8.4 | 2023年3月18日 |
---|---|
0.8.2 | 2023年2月19日 |
0.7.0 | 2022年1月8日 |
0.6.0 | 2017年11月25日 |
#85 in Unix API
每月下载量 47
54KB
1K SLoC
Circadian
GNU/Linux 电源管理的空闲挂起守护进程
Circadian 是一个后台守护进程/服务,当计算机空闲时自动触发挂起/休眠/休眠。
它主要用于具有永久电源的固定设备(即台式机、服务器、媒体中心)。
Circadian 使用一系列“空闲启发式”来确定系统何时空闲。这包括
- X11 中的用户活动(键盘、鼠标、全屏播放)
- 终端中的用户活动(在PTY/SSH会话中输入)
- 打开 SSH 连接
- 打开 SMB/Samba 连接
- 打开 NFS 连接
- 活跃的音频播放
- CPU 使用率低于指定阈值
- 黑名单进程
当其所有启发式方法都确定系统已经空闲足够长的时间时,Circadian 将执行一个命令。这通常是简单的电源挂起,但可以配置为任何期望的操作。
Circadian 还可以安排每天自动唤醒。只需在其配置文件中设置唤醒时间,它将在每天的这个时间唤醒(如果尚未唤醒)。这允许以简单的方式保持机器更新和备份,即使它很少使用。
它还可以在检测到系统从休眠中唤醒时执行命令,无论唤醒的原因是什么。
Circadian 存在的原因是现代 Linux 发行版已经支持空闲挂起,但它显然是一个非常问题和不可靠的领域。在你已经遵循了发行版的建议,在配置文件中戳了一堆、调整了一些XML层次结构、编写了一些脚本、在键盘上挥舞着燃烧的迷迭香的烟雾、将宝石挂在你机器上、以及任何可能被推荐的事情之后……也许可以尝试 Circadian。
示例用例
- 有噪音风扇的游戏机?空闲时自动休眠!
- 存储/备份机器?自动唤醒、备份和自动休眠!
- 很少使用的服务器,但需要可用?唤醒-on-LAN,在没有任何 SSH 连接时自动休眠!
- 醒来听你的本地音乐库?自动唤醒、播放音乐和自动休眠!
- 只在晚上使用的媒体中心?白天休眠,回家时自动唤醒!
状态
对我来说是有效的。您试试。您可以在GitHub上提供反馈,或者发送邮件到[email protected]。
安装
Debian x86-64
- 下载最新的Circadian发行版
$ sudo dpkg -i circadian_0.6.0-1_amd64.deb
如果需要,安装检测网络的工具(netstat
)、X11(xssstate
和xprintidle
)和音频活动(pactl
)
$ sudo apt-get install suckless-tools xprintidle net-tools pulseaudio-utils
编辑/etc/circadian.conf
进行配置。默认是在闲置2小时后通过systemd挂起。
当您对配置满意时,继续
$ sudo systemctl enable --now circadian
Arch Linux
- 使用您最喜欢的AUR包管理器
yay -S circadian
考虑安装xprintidle
和xssstate
的可选包以进行基于X11的闲置检测,以及net-tools
进行SSH检测。这两个选项默认启用。
任何其他具有systemd的系统
手动安装。很简单。
$ git clone https://github.com/mrmekon/circadian.git
$ cd circadian
$ cargo build --release
$ sudo cp target/release/circadian /usr/local/bin/
$ sudo cp resources/circadian.conf.in /etc/circadian.conf
$ sudo cp resources/circadian.service /etc/systemd/system/
$ sudo systemctl enable circadian
$ sudo systemctl start circadian
非systemd系统
遵循systemd说明,并将circadian.service端口转换为您想要的任何格式。
依赖项
- 可能需要安装
- xssstate
- xprintidle
- netstat
- pactl
- rustc + cargo(如果本地构建)
- 应该已经有
- grep
- awk
- w
- id
- uptime
- pgrep
- cat
- sh
自动唤醒需要内核支持实时时钟(RTC)。您可以检查文件/sys/class/rtc/rtc0/wakealarm
。您很可能有。
使用方法
- 应作为root运行,最好是通过systemd。
- 配置文件在:/etc/circadian.conf(已记录)
pkill -SIGUSR1 circadian
会将信息输出到syslog。使用它来查看是否正常工作,或找出为什么它没有睡眠。
依赖项
~8.5MB
~159K SLoC