"fatrace"가 특정 열린 이벤트(udisks /dev/sda)를 감지할 수 없는 이유는 무엇입니까?

"fatrace"가 특정 열린 이벤트(udisks /dev/sda)를 감지할 수 없는 이유는 무엇입니까?

`ioerr_cnt`가 계속 상승하지만 로그에 메시지가 표시되지 않는 이유는 무엇입니까?

어떤 과정으로 이런 일이 일어나는지 알아보려고 합니다. sudo lsof +D /dev/현재 열려 있는 SCSI 장치에 대해 표시되는 프로세스가 없는 것 같습니다. 그러나 오류가 발생할 때( cd /dev && sudo fatrace -c) 관련 open() 호출도 표시되지 않습니다...

[답변:] udisks는 예를 들어 SMART 데이터에 대해 10분마다 드라이브를 폴링합니다.

$ ps -ax|grep udisksd
  810 ?        Ssl    0:13 /usr/libexec/udisks2/udisksd
$ sudo strace -t -f -p 810
[pid   810] 14:11:09 clone(strace: Process 26543 attached
child_stack=0x7f8fc551ddf0, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x7f8fc551e9d0, tls=0x7f8fc551e700, child_tidptr=0x7f8fc551e9d0) = 26543
[pid 26543] 14:11:09 set_robust_list(0x7f8fc551e9e0, 24 <unfinished ...>
[pid   810] 14:11:09 poll([{fd=4, events=POLLIN}, {fd=8, events=0}, {fd=9, events=0}, {fd=11, events=POLLIN}, {fd=13, events=POLLIN}], 5, 599968 <unfinished ...>
[pid 26543] 14:11:09 <... set_robust_list resumed> ) = 0
[pid 26543] 14:11:09 prctl(PR_SET_NAME, "pool") = 0
[pid 26543] 14:11:09 openat(AT_FDCWD, "/dev/sda", O_RDONLY|O_NONBLOCK) = 14
[pid 26543] 14:11:09 ioctl(14, SG_IO, {guard='Q', protocol=BSG_PROTOCOL_SCSI, subprotocol=BSG_SUB_PROTOCOL_SCSI_CMD, ...

fatrace장치가 udisk에 의해 열린 것으로 표시되지 않는 이유를 모르겠습니다 . 다른 장치가 열려 있음을 표시합니다(예를 들어 lsof를 실행하거나 firefox를 시작하면 /dev/dri/card0이 열립니다).

^^ 아시는 분 계시나요?

답변1

fatrace표시 되지 않는 것 같습니다 .어느장치가 켜집니다. 이를 사용하여 프로세스 열기 상태를 볼 수 있습니다.목차다음은 /dev과 비슷 /dev/dri하지만 과 같은 장치 노드는 아닙니다 /dev/dri/card0.

관련 정보