이상한 정지 "ls -l" 또는 "dir -l"이 작동하지 않습니다.

이상한 정지 "ls -l" 또는 "dir -l"이 작동하지 않습니다.

내 Debian 서버에서 이상한 동작이 발생했습니다.

문맥:Linux 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt11-1+deb8u5 (2015-10-09) x86_64 GNU/Linux

사용자:root

명령 ls, ls -a또는 완벽하게 실행 ls -1됩니다 dir. 그러나 이러한 명령은ls -l,dir -l/이 두 명령은 터미널을 디렉터리 에만 정지시킵니다.

답변1

ls/... ls -a현재 디렉토리의 내용만 읽을 뿐 파일에는 아무 작업도 수행하지 않습니다.

ls -l또는 나열된 파일 자체에서 메타데이터 정보(권한, 유형, 소유권, 수정 시간...) ls -Fls --color가져와야 합니다. 따라서 getdents()디렉터리 내용을 읽는 시스템 호출 외에도 작업을 수행 lstat()해야 합니다 .readlink()stat()ls-F--color

또는 기타+@선택적 대체 액세스 방법 플래그때로는 권한을 얻은 후 일부 추가 시스템 호출을 수행해야 할 수도 있습니다(예: getxattr()Linux에서 ACL 검색).

이를 사용할 때 ls -l사용자 데이터베이스를 쿼리하고 uid 및 gid를 사용자 이름 및 그룹 이름으로 변환해야 합니다.

따라서 간단하게는 파일(현재 작업 디렉터리)을 열고 그 내용을 읽으면 되지만 //... ls훨씬 더 큰 규모에서는 실패한다는 것을 쉽게 알 수 있습니다.-l-F--color

  • lstat()파일 시스템의 마운트 지점에서 파일을 사용할 수 없으면 실패하거나 중단될 수 있습니다.
  • stat()대상이 사용할 수 없는 파일 시스템에 있으면 기호 링크가 실패할 수 있습니다.
  • 사용자 데이터베이스에 대한 쿼리가 실패하거나 중단될 수 있습니다(예: 네트워크(LDAP/NIS+) 사용자 데이터베이스를 사용하는 배포의 경우).

답변2

내 디렉터리의 폴더 중 하나는 /종료된 다른 컴퓨터에서 마운트된 볼륨 폴더입니다. 마운트된 디렉터리에 액세스할 수 없습니다.

관련 정보