parted를 실행하면 udev가 실행되지만 fdisk는 실행되지 않습니다.

parted를 실행하면 udev가 실행되지만 fdisk는 실행되지 않습니다.

저는 서버 환경(RHEL 7.2 또는 유사)에 있고 parted print를 실행할 때 파티션만 나열하고 있음에도 불구하고 udev 규칙이 호출되는 것을 발견했습니다(사용자 정의 심볼릭 링크 생성). fdisk를 실행할 때 udev가 트리거되지 않습니다.

나는 둘 다 strace -fed 했고 두 가지 의심스러운 항목만 발견했습니다. 1) parted는 여러 udev 항목을 열었습니다(그러나 그것이 무엇을 호출했는지는 실제로 알 수 없었습니다). 2) parted는 먼저 RO에서 장치를 열고 나중에 열었습니다. , RW. udev 후크가 있는지 확실하지 않습니다.

이와 관련된 systemd/udevd 조각을 아는 사람이 있나요?

감사해요!

답변1

알았어... 알아냈어... (exec 5<> /dev/sda) udev가 sda에 대한 규칙을 평가하도록 트리거합니다. 읽기만 하면 트리거되지 않으므로 udev는 어딘가에서 inotify 또는 kprobe를 사용하거나 읽기 및 쓰기 시 트리거되는 일종의 장치 리스너를 사용합니다. 종료 시 트리거될 수 있습니다.

(이것은 부분적인 답변입니다. 어떤 작업이 트리거를 유발하는지 꽤 명확하기 때문입니다. 하지만 udev가 직접 트리거하도록 지시하는 부분을 누군가가 정확히 밝힐 수 있을 경우를 대비해 질문을 열어두고 싶었습니다. 마치 systemd/udevd가 오픈을 가로채는 것처럼요. / off, 또는 inotify 또는 kprobe가 관련되어 있는지 여부).

관련 정보