小编aig*_*fer的帖子

如何在 udev 规则中使用 ENV{SYSTEMD_USER_WANTS}= ?

docked.target我想在我的用户级别设置一个systemd。这个想法是运行一些服务来配置我的外部显示器。

我目前的规则是:

SUBSYSTEM=="usb", ACTION=="add", ENV{ID_VENDOR}=="17ef", ENV{ID_MODEL}=="100a", SYMLINK+="tp_mini_dock", TAG+="systemd", ENV{SYSTEMD_USER_WANTS}="docked.target"
Run Code Online (Sandbox Code Playgroud)

该规则很好地被检测到(我可以dev-tp_mini_dock.device在停靠时看到)。

然后我把这个放进去~/.config/systemd/user/docked.target(也尝试过/etc/systemd/user但没有运气):

[Unit]
Description=Docked to ThinkPad Mini Dock
BindTo=dev-tp_mini_dock.device
Run Code Online (Sandbox Code Playgroud)

但这不会在我停靠时启动。但是,如果我docked.target在对接时手动启动,则当我断开对接时它会按预期停止。

但是,如果我使用ENV{SYSTEMD_WANTS}="docked.target"文件并将其放入 中/etc/systemd/system/docked.target,目标会在我停靠时按预期启动。那么问题是我的用户级实例不知道系统级服务/目标。

有什么想法吗?我在网上看到了一些其他问题,其中一个几乎与我的完全一样:https://bbs.archlinux.org/viewtopic.php ?pid=1600019

linux udev systemd

5
推荐指数
1
解决办法
9600
查看次数

标签 统计

linux ×1

systemd ×1

udev ×1