연결 해제와 rm의 차이점은 무엇입니까?

연결 해제와 rm의 차이점은 무엇입니까?

연결 해제가 rm보다 더 빠릅니까?

답변1

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

사용자 영역 유틸리티 간의 차이점을 평가합니다.

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). 의미론은 여전히 ​​플랫폼마다 다를 수 있습니다.

답변2

POSIX 사양 수준에서는 무엇을RM무엇보다 훨씬 더 엄격하게 지정됩니다.풀리다하다.

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

답변3

제거 시 느린 부분은 unlink() 시스템 호출을 위한 사용자 공간 준비가 아닌 파일 시스템 코드 및 디스크 관련 부분입니다.

즉, 속도 차이가 중요하다면 파일 시스템에 데이터를 저장하면 안 됩니다.

연결 해제는 단지 rm "빛"입니다. rm에는 더 많은 기능이 있지만 동일한 작업을 수행합니다.

관련 정보