unlink와 rm의 차이점은 무엇입니까? 링크 해제가 rm보다

링크 해제가 rm보다 빠릅니까?



답변

둘 다 unlink()시스템 호출 인 동일한 기본 기능에 대한 랩퍼 입니다.

Userland 유틸리티 간의 차이점을 측정합니다.

rm(1):

  • 더 많은 옵션.
  • 더 많은 피드백.
  • 정신 검사.
  • 위의 결과로 단일 호출의 경우 조금 느려집니다.
  • 동시에 여러 개의 인수로 호출 할 수 있습니다.

unlink(1):

  • 위생 검사가 적습니다.
  • 디렉토리를 삭제할 수 없습니다.
  • 재발 할 수 없습니다.
  • 한 번에 하나의 인수 만 취할 수 있습니다.
  • 단순성으로 인해 단일 통화에 대해서는 한계가 있습니다.
  • rm(1)여러 개의 인수 를 제공 하는 것과 비교할 때 속도가 느 립니다.

다음과 같은 차이점을 보여줄 수 있습니다.

$ touch $(seq 1 100)
$ unlink $(seq 1 100)
unlink: extra operand `2'

$ touch $(seq 1 100)
$ time rm $(seq 1 100)

real    0m0.048s
user    0m0.004s
sys     0m0.008s

$ touch $(seq 1 100)
$ time for i in $(seq 1 100); do rm $i; done

real    0m0.207s
user    0m0.044s
sys     0m0.112s

$ touch $(seq 1 100)
$ time for i in $(seq 1 100); do unlink $i; done

real    0m0.167s
user    0m0.048s
sys     0m0.120s

그러나 우리가 시스템 unlink(2)기능 에 대한 불충분 한 호출에 대해 이야기하고 있다면 , 지금은 아마도 당신이 설명하고 있지 않을 것입니다.

unlink()디렉토리와 파일 모두 에서 시스템 을 수행 할 수 있습니다 . 그러나 디렉토리가 다른 디렉토리 및 파일의 부모 인 경우 해당 부모에 대한 링크는 제거되지만 자식은 매달려 있습니다. 어느 것이 이상적이지 않습니다.

편집하다:

unlink(1)과 의 차이점을 명확히했습니다 unlink(2). 시맨틱은 여전히 ​​플랫폼마다 다릅니다.


답변

POSIX 스펙 레벨에서, rm 이하는 것은 unlink 가하는 것보다 훨씬 더 엄격하게 지정됩니다 .

스크립트가 OS에서 실행되어야하는 경우 결과의 이식성은 rm을 사용하는 것이 좋습니다.


답변

제거의 느린 부분은 unlink () 시스템 호출의 사용자 공간 준비가 아니라 파일 시스템 코드 및 디스크 항목입니다.

즉, 속도 차이가 중요한 경우 파일 시스템에 데이터를 저장해서는 안됩니다.

unlink는 rm “light”입니다. rm에는 더 많은 기능이 있지만 동일한 기능을 수행합니다.


답변