来自联机帮助页pm-action(8)
:
/etc/pm/sleep.d, /usr/lib/pm-utils/sleep.d
这些目录中的程序(称为钩子)被组合起来并在以下位置执行:C排序顺序在挂起和休眠之前,以“挂起”或“休眠”作为参数。
之后,分别使用参数“resume”和“thaw”以相反的顺序调用它们。
如果两个目录都包含一个类似的命名文件,其中的一位
/etc/pm/sleep.d
将获得优先权。可以通过将不可执行文件放入 中/etc/pm/sleep.d
或将其添加到HOOK_BLACKLIST
配置变量来禁用分发目录中的挂钩。
什么是“C排序”?
“一个相似的命名文件”是否意味着两个文件相同的文件名?
我有两个文件/usr/lib/pm-utils/sleep.d/94cpufreq
和/etc/pm/sleep.d/20_cpu_freq
.恢复解冻时,先运行哪一个,再运行哪一个?
谢谢。
答案1
C 词汇排序顺序非常简单:数值较小的字符排在数值较大的字符之前。现在几乎所有 UNIX 派生系统都使用扩展的 ASCII 派生字符集,因此排序将是 8 位,如下所示:
- 控制字符:NUL-US(
^@
-^_
:0-26) - 可打印字符:(
空格)-
/
,0
-9
,:
-@
,A
-Z
,[
-`
,a
-z
,{
-~
- 扩展字符:之后的内容(取决于代码页)
因此,这里有一些文件名,按顺序排列:
!afile
0Afile
0_file
0afile
0~file
20-cpu_freq
20_cpu_freq
94Cpufreq
94cpufreq
通过“相似命名文件”,两个目录列表被合并,如果两个文件具有相同的名称,则获胜/etc/pm/sleep.d
:如果您有/usr/lib/pm-utils/sleep.d/94cpufreq
和/etc/pm/sleep.d/94cpufreq
,则将读取后者。
这些运行的顺序由pm-utils
正在执行的操作决定(从HOWTO.hooks):
SLEEP.D 具体注释
对于任何给定的睡眠/唤醒周期,中的挂钩
sleep.d
会运行两次:
- 在系统进入睡眠状态之前按 C 词法排序顺序进行一次,并且
- 一旦系统唤醒时按反向 C 词法排序顺序。
长话短说: 20_cpu_freq
准备睡觉时将首先运行,94cpufreq
第二次运行,醒来时则相反。