UDEVADM(8) udevadm UDEVADM(8) udevadm - udev udevadm [--debug] [--version] [--help] udevadm info [options...] [devpath|syspath|id|unit...] udevadm trigger [options...] [devpath|syspath|id|unit...] udevadm settle [options...] udevadm control options... udevadm monitor [options...] udevadm test [options...] devpath|syspath|id|unit udevadm test-builtin [options...] command devpath|syspath|id|unit udevadm verify [options...] [files...] udevadm cat [options...] [files...] udevadm wait [options...] devpath|syspath... udevadm lock [options...] command... udevadm . systemd-udevd . -d --debug . udevadm test udevadm test-builtin. -V --version . -h --help . udevadm info [options...] [devpath|syspath|id|unit...] udev . . ( /dev/) sys ( /sys/) ( "n1" "c5:1" "b259:1" sd_device_get_device_id(3)). systemd ( ".device" systemd.device(5)). -q, --query=TYPE . TYPE : name symlink path property all. --property=NAME --query=property . . . 250. --value --query=property "=". -x/--export -P/--export-prefix. 250. -p, --path=DEVPATH /sys/ [/sys/]/class/block/sda. /sys/. udevadm info --path=/class/block/sda udevadm info /sys/class/block/sda. -n, --name=FILE [/dev/]/sda. /dev/. udevadm info --name=sda udevadm info /dev/sda. -r, --root name symlink. -a, --attribute-walk sysfs udev . sysfs udev. JSON ( --json= ). JSON JSON-SEQ (RFC7464). (: jq[1] JSON-SEQ --seq.) -t --tree sysfs. sysfs . . . 251. -x --export /. . --query=property --device-id-of-file=FILE. -P, --export-prefix=NAME . --export. -d, --device-id-of-file=FILE / . . -e, --export-db udev. -c, --cleanup-db udev. -w[SECONDS], --wait-for-initialization[=SECONDS] . SECONDS . 243. --subsystem-match[=SUBSYSTEM], --subsystem-nomatch[=SUBSYSTEM] --export-db . 255. --attr-match[=FILE[=VALUE]], --attr-nomatch[=FILE[=VALUE]] --export-db . 255. --property-match[==] --export-db . 255. --tag-match[=] --export-db . 255. --sysname-match[=] --export-db "/sys" . 255. --name-match[=] --export-db "/dev". 255. --parent-match[=] --export-db . 255. --initialized-match --initialized-nomatch --export-db . 255. --json= JSON. : "short" ( ) "pretty" ( ) "off" ( JSON ). --no-pager (pager). . : 1. udevadm info +----------------------+---------------------------+ | | | +----------------------+---------------------------+ |"P:" | | | | | | | /sys/ | +----------------------+---------------------------+ |"M:" | | | | | | | /sys/ ( | | | | | | | | | "P:") | +----------------------+---------------------------+ |"R:" | | | | | | | /sys/ ( | | | | | | | | | | | | | | | "P:") | +----------------------+---------------------------+ |"J:" | | | | | +----------------------+---------------------------+ |"U:" | | | | | | | | +----------------------+---------------------------+ |"B:" | | | | | | | | +----------------------+---------------------------+ |"T:" | | | | | | | | | | | | | | +----------------------+---------------------------+ |"D:" | | | | / | | | | | | | | | | +----------------------+---------------------------+ |"I:" | | | | | | | | +----------------------+---------------------------+ |"N:" | | | | | | | | +----------------------+---------------------------+ |"L:" | | | | | | | | | | | | | | +----------------------+---------------------------+ |"S:" | | | | | | | | | | | +----------------------+---------------------------+ |"Q:" | | | | | | | | | | (DISKSEQ) | +----------------------+---------------------------+ |"V:" | | | | | | | | +----------------------+---------------------------+ |"E:" | | | | | +----------------------+---------------------------+ udevadm trigger [options...] [devpath|syspath|id|unit...] . . . udevadm info . -v --verbose . -n --dry-run . -q --quiet . 248. -t, --type=TYPE . "all" "devices" "subsystems". "devices". -c, --action=ACTION . "add" "remove" "change" "move" "online" "offline" "bind" "unbind". "help" . "change". --prioritized-subsystem= [ ...] . . --prioritized-subsystem=block,net . . --prioritized-subsystem=block --prioritized-subsystem=net --prioritized-subsystem=block,net. 251. -s, --subsystem-match= . . OR . -S, --subsystem-nomatch= . . AND . -a, --attr-match== sysfs . . sysfs. AND . -A, --attr-nomatch== sysfs . . sysfs. AND . -p, --property-match== . . OR . -g, --tag-match= . AND . -y, --sysname-match= ( ) /sys/ PATH . . OR NAME . --name-match= . OR . 218. -b, --parent-match=_ . OR . --initialized-match --initialized-nomatch --initialized-match systemd-udevd . --initialized-nomatch systemd-udevd . udev . . --initialized-nomatch . . udev ( "ATTRS" "IMPORT{parent}" udev(7) ) . 251. --include-parents . . 258. -w --settle . udevadm settle. udevadm settle . . 238. --uuid UUID . UUIDs . UUIDs uevent ( "SYNTH_UUID=") . 249. --wait-daemon[=] uevents systemd-udevd . . 5 . udevadm control --ping udevadm trigger. 241. sys. /dev/ /sys/ . udevadm settle [...] udev . -t --timeout= . 120 . 0 . 0 . -E --exit-if-exists= . systemd-udev-settle.service(8) . udevadm control ... udev . -e --exit systemd-udevd. --timeout . systemd-udevd.service Restart=always systemd-udevd. systemd-udevd.service : systemctl stop systemd-udevd-control.socket systemd-udevd-kernel.socket systemd-udevd-varlink.socket systemd-udevd.service -l --log-level= systemd-udevd. syslog : emerg alert crit err warning notice info debug. -s --stop-exec-queue systemd-udevd . . -S --start-exec-queue systemd-udevd . -R --reload systemd-udevd . . -p --property== . -m --children-max= systemd-udevd . 0 . --ping ping systemd-udevd . systemd-udevd . 241. --trace=_ / systemd-udevd. 258. --revert udevadm control. -l/--log-level= --trace -m/--children-max= -p/--property=. 258. -t --timeout= systemd-udevd. --load-credentials : udev.conf.* udev.conf(5) . . : udev.conf.50-foobar /run/udev/udev.conf.d/50-foobar.conf. 256. udev.rules.* udev(7) . . : udev.rules.50-foobar /run/udev/rules.d/50-foobar.rules. 256. --reload. systemd-udevd -reload udev systemd-udevd. 256. udevadm monitor [...] uevents udev . uevent udev. -k --kernel uevents . -u --udev udev . -p --property . -s --subsystem-match=[/] uevents udev [/ ]. . OR . -t --tag-match= udev . udev . OR . udevadm test [options...] devpath|syspath|id|unit udev . --json= . . -a, --action=ACTION . "add" "remove" "change" "move" "online" "offline" "bind" "unbind". "help" . "add". -N, --resolve-names=early|late|never udevadm udev. early () . late . never udev . 209. -D DIR, --extra-rules-dir=DIR udev . . udev udev . udev/rules.d systemd-udevd. udev(7) . 258. -v --verbose udev. 258. --json= JSON. : "short" ( ) "pretty" ( ) "off" ( JSON ). udevadm test-builtin [options...] command devpath|file|unit COMMAND DEVPATH . -a, --action=ACTION . "add" "remove" "change" "move" "online" "offline" "bind" "unbind". "help" . "add". 250. udevadm verify [options...] [files...] udev. . udev udev ( 99-systemd.rules). udev/rules.d systemd-udevd . udev udev/rules.d systemd-udevd. udev(7) . 0 udev . -N, --resolve-names=early|late|never udevadm udev. early () . late systemd-udevd . never . 254. --root= udev udev/rules.d PATH. udev/rules.d PATH . 254. --no-summary . 254. --no-style . udev 0 . 254. udevadm cat [options...] [file...] udev udev.conf. . udev udev ( 99-systemd.rules). udev/rules.d systemd-udevd . udev udev/rules.d systemd-udevd. udev(7) . --root= udev udev/rules.d PATH. udev/rules.d PATH . 258. --tldr " " . 258. --config udev.conf(5) udev. udev. 258. udevadm wait [options...] devpath|syspath... systemd-udevd. "/dev/" "/sys/" "/dev/sda" "/dev/disk/by-path/pci-0000:3c:00.0-nvme-1-part1" "/sys/devices/pci0000:00/0000:00:1f.6/net/eth0" "/sys/class/net/eth0". . systemd-udevd . -t --timeout= . "infinity". 251. --initialized=BOOL systemd-udevd . true. false . false udev . . 251. --removed . --initialized=. 251. --settle udev systemd-udevd. 251. udevadm lock [options...] command... udevadm lock () ( ) Locking Block Device Access[2] . udevadm lock. systemd-udevd.service(8) . --lock sfdisk(8). --device= --backing= . --device=DEVICE, -d DEVICE . ( --backing=) . "" . / . . ( --backing= .) 251. --backing=PATH, -b PATH --device=. / --device=. 251. --timeout=SECS, -t SECS . systemd.time(7). . "infinity" () . . 251. --print, -p . "" . ( ). --device= --backing= "". 251. udev - "remove" -- ( udev). "remove" ( udev). udev sd-device ( ). 1. systemd-udevd : # udevadm lock --device=/dev/sda1 mkfs.ext4 /dev/sda1 2. RAID : # udevadm lock --device=/dev/sda1 --device=/dev/sdb1 mkfs.btrfs /dev/sda1 /dev/sdb1 3. systemd-udevd : # udevadm lock -d /dev/sda1 dd if=fs.raw of=/dev/sda1 4. udevadm test: $ udevadm test /sys/class/net/wlan0 --json=pretty 2>/dev/null | jq .networkInterface.name "wlp59s0" 5. udevadm test: $ udevadm test /dev/nvme0n1p1 --json=pretty 2>/dev/null | jq .node.symlinks [ "/dev/disk/by-diskseq/1-part1", "/dev/disk/by-id/nvme-WDC_PC_SN720_SDAQNTW-512G-1001_192290802247-part1", "/dev/disk/by-id/nvme-WDC_PC_SN720_SDAQNTW-512G-1001_192290802247_1-part1", "/dev/disk/by-id/nvme-eui.1922908022470001001b448b44ccb9d6-part1", "/dev/disk/by-path/pci-0000:3c:00.0-nvme-1-part/by-partnum/1", "/dev/disk/by-path/pci-0000:3c:00.0-nvme-1-part1" ] $ udevadm test /dev/input/event3 --json=pretty 2>/dev/null | jq .node.symlinks [ "/dev/input/by-path/platform-i8042-serio-0-event-kbd" ] udev(7), systemd-udevd.service(8), udev.conf(5) 1. jq https://jqlang.github.io/jq/manual/ 2. https://systemd.io/BLOCK_DEVICE_LOCKING 3 . . : . systemd 260.2 UDEVADM(8)