`losetup --list`의 출력은 어떻게 정렬됩니까?

`losetup --list`의 출력은 어떻게 정렬됩니까?

시스템의 루프백 장치 목록을 가져오기 위해 실행 losetup --list(또는 그냥 )하면 출력이 의미 있는 순서로 되어 있지 않은 것 같습니다.losetup

0 $  losetup --list
NAME        SIZELIMIT OFFSET AUTOCLEAR RO BACK-FILE                                                   DIO LOG-SEC
/dev/loop1          0      0         1  1 /var/lib/snapd/snaps/core18_1885.snap                         0     512
/dev/loop29         0      0         1  1 /var/lib/snapd/snaps/core18_1880.snap                         0     512
/dev/loop19         0      0         1  1 /var/lib/snapd/snaps/gtk-common-themes_1506.snap              0     512
/dev/loop27         0      0         1  1 /var/lib/snapd/snaps/gnome-characters_539.snap                0     512
/dev/loop17         0      0         1  1 /var/lib/snapd/snaps/gnome-characters_550.snap                0     512
/dev/loop8          0      0         1  1 /var/lib/snapd/snaps/gtk-common-themes_1502.snap              0     512
/dev/loop25         0      0         1  1 /var/lib/snapd/snaps/kde-frameworks-5-qt-5-14-core18_4.snap   0     512
/dev/loop15         0      0         1  1 /var/lib/snapd/snaps/glimpse-editor_134.snap                  0     512
/dev/loop6          0      0         1  1 /var/lib/snapd/snaps/gnome-calculator_730.snap                0     512
/dev/loop23         0      0         1  1 /var/lib/snapd/snaps/gnome-logs_93.snap                       0     512
/dev/loop13         0      0         1  1 /var/lib/snapd/snaps/wormhole_112.snap                        0     512
/dev/loop4          0      0         1  1 /var/lib/snapd/snaps/canonical-livepatch_94.snap              0     512

분명히 장치 이름이나 지원 파일 이름별로 정렬되지 않았습니다. 순서가 임의로 정해져 있나요?

답변1

losetup읽다getdents64()from /sys/block이므로 해당 디렉토리의 항목 순서입니다.

동일한 순서(정렬되지 않음)를 얻으면 ls -f다음과 같습니다.

# ls -f /sys/block | grep loop
loop1
loop6
loop4
loop2
loop0
loop7
loop5
loop3

그리고 losetup비교해보세요:

# losetup
NAME       SIZELIMIT OFFSET AUTOCLEAR RO BACK-FILE  DIO LOG-SEC
/dev/loop1         0      0         0  0 /dev/shm/b   0     512
/dev/loop6         0      0         0  0 /dev/shm/c   0     512
/dev/loop4         0      0         0  0 /dev/shm/a   0     512
/dev/loop2         0      0         0  0 /dev/shm/c   0     512
/dev/loop0         0      0         0  0 /dev/shm/a   0     512
/dev/loop7         0      0         0  0 /dev/shm/d   0     512
/dev/loop5         0      0         0  0 /dev/shm/b   0     512
/dev/loop3         0      0         0  0 /dev/shm/d   0     512

맨페이지에는 getdents주문에 대한 언급이 없지만readdir설명하다:

   The order in which filenames are read by successive calls to readdir()
   depends on the filesystem implementation; it is unlikely that the names
   will be sorted in any fashion.

정렬된 목록(등)으로 파일을 출력하는 프로그램은 일반적 으로 파일을 스스로 정렬하며, ls.echo *

losetup출력 의 경우 , 누구도 의미 있는 방식으로 정렬하려고 노력하지 않았다고 생각합니다.

관련 정보