我试图/sys/bus/usb/devices/4-3/power/wakeup在每次启动时更改 的值(根据我的 4-3 lsusb,这是键盘 ID)。
默认值为:
# cat /sys/bus/usb/devices/4-3/power/wakeup
enabled
Run Code Online (Sandbox Code Playgroud)
经典的“在线”编辑按预期工作:
# echo disabled > /sys/bus/usb/devices/4-3/power/wakeup
# cat /sys/bus/usb/devices/4-3/power/wakeup
disabled
Run Code Online (Sandbox Code Playgroud)
我正在使用 systemd 发行版,所以我想使用systemd 方式来编辑“临时文件”
我创建了以下文件:
# cat /etc/tmpfiles.d/disable-usb-wakeup.conf
w /sys/bus/usb/devices/4-3/power/wakeup - - - - disabled
Run Code Online (Sandbox Code Playgroud)
但每次启动后我仍然在这个文件中使用默认值(即启用)
难道我做错了什么?
编辑:
这是另一个测试:
# cat /etc/tmpfiles.d/scheduler.conf
w /sys/block/sda/queue/scheduler - - - - deadline
Run Code Online (Sandbox Code Playgroud)
这个很好用!启动后我得到:
# cat /sys/block/sda/queue/scheduler
noop [deadline] cfq
Run Code Online (Sandbox Code Playgroud)
(默认的是 cfq 调度程序)
那么,为什么这个有效而另一个无效呢?
/sys/bus/usb/devices/4-3/power/wakeup是一个符号链接/sys/devices/pci0000:00/0000:00:12.1/usb4/4-3/?/sys/bus/usb/devices/4-3/power/wakeup只包含一个词?(即没有空格)我有一个关于为 Systemd 制作我自己的单元(服务)文件的问题。
我已经阅读了文档并有一些问题。四处搜索后,我发现了这个非常有用的答案,其中提供了有关我遇到的一些问题的一些详细信息。
如何编写运行 systemd-tmpfiles 的 systemd .service 文件
虽然我觉得这个答案很有用,但仍有一部分我不明白。主要是这部分:
由于我们实际上希望此服务运行得更晚而不是更早,因此我们指定了一个“After”子句。这实际上不需要与 WantedBy 目标相同(通常不是)
我对 After 的理解是它非常简单。该服务(或您定义的任何服务)将在 After 中列出的单元之后运行。
同样,WantedBy 看起来很简单。您正在定义您列出的单位对您的服务有需求。因此,对于像多用户或图形这样的目标,应该运行您的单元,以便 systemd 考虑达到该目标。
现在,假设我对这些声明如何工作的理解到目前为止是正确的,我的问题是:为什么在 After 和 WantedBy 子句中列出相同的单元会起作用?
例如,定义一个在 multi-user.target 和 WantedBy multi-user.target 之后的单元在我看来会导致不可能的情况,即在达到目标后需要启动该单元,但它也需要开始被视为“达到”的目标。
我误解了什么吗?