내 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 -F
를 ls --color
가져와야 합니다. 따라서 getdents()
디렉터리 내용을 읽는 시스템 호출 외에도 작업을 수행 lstat()
해야 합니다 .readlink()
stat()
ls
-F
--color
또는 기타+
@
선택적 대체 액세스 방법 플래그때로는 권한을 얻은 후 일부 추가 시스템 호출을 수행해야 할 수도 있습니다(예: getxattr()
Linux에서 ACL 검색).
이를 사용할 때 ls -l
사용자 데이터베이스를 쿼리하고 uid 및 gid를 사용자 이름 및 그룹 이름으로 변환해야 합니다.
따라서 간단하게는 파일(현재 작업 디렉터리)을 열고 그 내용을 읽으면 되지만 //... ls
훨씬 더 큰 규모에서는 실패한다는 것을 쉽게 알 수 있습니다.-l
-F
--color
lstat()
파일 시스템의 마운트 지점에서 파일을 사용할 수 없으면 실패하거나 중단될 수 있습니다.stat()
대상이 사용할 수 없는 파일 시스템에 있으면 기호 링크가 실패할 수 있습니다.- 사용자 데이터베이스에 대한 쿼리가 실패하거나 중단될 수 있습니다(예: 네트워크(LDAP/NIS+) 사용자 데이터베이스를 사용하는 배포의 경우).
답변2
내 디렉터리의 폴더 중 하나는 /
종료된 다른 컴퓨터에서 마운트된 볼륨 폴더입니다. 마운트된 디렉터리에 액세스할 수 없습니다.