作为根,我运行
root@myself:~# echo disable | sudo tee /proc/acpi/ibm/fan; sleep 5; echo enable | sudo tee /proc/acpi/ibm/fan
但我明白了
disable
tee: /proc/acpi/ibm/fan: Invalid argument
enable
tee: /proc/acpi/ibm/fan: Invalid argument
当我以root身份运行时,这怎么可能?
我需要做什么才能使其工作?
问题不在于您的
tee
命令 - 尽管由于您已经在 root shell 中,您可以使用简单的重定向echo disable > /proc/acpi/ibm/fan
(当然可以删除sudo
)。尽管“Linux 中的一切都是文件”,但现实情况是,“文件”实际上是
/proc
运行内核的接口,其行为与常规文件不同——如果我们使用,我们可以看到错误并非strace
真正来自tee
,但是从对打开文件描述符的底层write
调用(我将语法从管道更改为here-string以确保我们正在跟踪tee
不是echo
):该参数无效的原因是默认情况下,该
thinkpad_acpi
模块不启用风扇控制 - 如果您cat
使用该文件,您可能会看到如下几行:为了启用风扇控制,您需要在加载过程中向模块传递一个选项,您可以使用配置文件执行此操作:
您可以在文本编辑器中创建,也可以使用
(这只是一个普通文件,所以
tee
这次没有问题)。然后您将需要重新启动 - 不幸的是,似乎无法thinkpad_acpi
即时删除并重新加载模块。重新启动以使用新选项重新加载模块后,您应该会看到它现在列出了一些附加
fan_control
命令:现在,您应该能够启用/禁用/修改风扇参数,方法是
/proc/acpi/ibm/fan
直接使用诸如 your 之类的命令写入tee
,或使用thinkfan
链接中描述的实用程序。有关 的更多背景信息
/proc
,请参阅运行命令 cat /proc/cpuinfo 时会发生什么?