
Linux의 심볼릭 링크는 환상적인 기능이지만 깨져서 아무것도 가리 키지 않을 수 있습니다. 끊어진 심볼릭 링크를 찾아서 검토하고 필요한 경우 시스템에서 제거하는 방법은 다음과 같습니다.
심볼릭 링크 101
“소프트 링크”및 “심볼 링크”라고도하는 기호 링크는 파일 및 디렉토리를 가리킬 수있는 바로 가기의 한 형태입니다. 심볼릭 링크는 파일 관리자 창의 일반 파일 또는 디렉토리와 같습니다. 또한 터미널 창에 나열된 파일의 항목으로 표시됩니다. 심볼릭 링크가 가리키는 파일 또는 디렉토리는 파일 시스템 트리의 어디에나있을 수 있습니다.
예를 들어, 파일 시스템 트리의 다른 곳에 위치한 “text-file.txt”라는 파일을 가리키는 “dave-link”라는 홈 디렉토리에 심볼릭 링크가 있다고 가정 해 보겠습니다. 심볼릭 링크에서 사용하는 명령은 해당 심볼이 가리키는 파일에 자동으로 적용됩니다. 사용하려고하면 cat 또는 less 심볼릭 링크에서 실제로 “text-file.txt”파일의 내용을 볼 수 있습니다.
표준 Linux 설치에는 많은 심볼릭 링크가 포함됩니다. 직접 만들지 않더라도 운영 체제에서 사용합니다. 응용 프로그램 설치 루틴은 종종 심볼릭 링크를 사용하여 실행 파일을 가리 킵니다. 소프트웨어가 업데이트되면 이진 파일이 새 버전으로 대체되고 새 파일의 이름이 이전 파일과 같으면 모든 심볼릭 링크가 이전과 동일하게 작동합니다.
다음을 사용하여 일부 심볼릭 링크를 쉽게 볼 수 있습니다. ls 루트 디렉토리에 있습니다. 일부 항목은 다른 색상으로 표시됩니다. Ubuntu 20.10 테스트 시스템에서는 밝은 파란색으로 표시됩니다.
다음을 입력합니다.
ls /

다음을 사용하여 더 자세히 살펴볼 수 있습니다. -l (긴 목록) 옵션. 다음 명령을 입력하여 모든 “lib”항목과 단일 “bin”항목을 확인합니다.
ls -l /lib* /bin

각 줄의 시작 부분에는 항목이 심볼릭 링크임을 나타내는 “l”이 있습니다. “->”뒤의 텍스트는 심볼릭 링크가 가리키는 것을 보여줍니다. 이 예에서 대상은 모든 디렉토리입니다.
권한은 소유자, 그룹 및 기타 사용자에 대해 읽기, 쓰기 및 실행으로 나열됩니다. 이들은 기본 가짜 항목입니다. 심볼릭 링크가 가리키는 개체에 대한 실제 사용 권한을 반영하지 않습니다. 우선 순위를 가지며 파일 시스템에서 적용되는 것은 대상 파일 또는 디렉터리에 대한 권한입니다.
끊어진 Symlink
심볼릭 링크가 가리키는 파일이 삭제되거나 다른 위치로 이동되면 심볼릭 링크가 끊어집니다. 응용 프로그램의 제거 루틴이 제대로 작동하지 않거나 완료되기 전에 중단되면 손상된 심볼릭 링크가 남을 수 있습니다.
누군가가 파일을 가리키는 심볼릭 링크를 모르고 수동으로 파일을 삭제하면 해당 심볼릭 링크가 더 이상 작동하지 않습니다. 불도저로 피해를 입은 마을을 가리키는 도로 표지판과 같습니다.
현재 디렉토리에서 “hello”라는 심볼릭 링크를 사용하여이 동작을 쉽게 볼 수 있습니다. 다음을 사용하여 다음을 입력합니다. ls 그것을보기 위해:
ls -l
“bin”이라는 디렉토리에있는 “htg”라는 프로그램을 가리 킵니다. 심볼릭 링크를 “실행”하면 프로그램이 자동으로 실행됩니다.
./hello
이제 프로그램을 직접 실행하여 이런 일이 발생하는지 확인할 수 있습니다.
../bin/htg
예상대로 우리는 동일한 응답을 얻습니다. 프로그램 파일을 삭제하겠습니다.
rm ../bin/htg
이제 심볼릭 링크를 보면 Linux가 손상되었음을 인식하기 때문에 빨간색으로 표시됩니다. 또한 파일을 교체하거나 프로그램을 다시 컴파일하거나 심볼릭 링크를 복구하는 데 필요한 모든 작업을 수행 할 수 있도록 이전에 무엇을 가리 켰는 지 알려줍니다.
심볼릭 링크를 실행하려고하면 오류가 심볼릭 링크가 가리키는 프로그램의 이름이 아닌 심볼릭 링크 이름을 참조합니다.
다음을 입력합니다.
./hello

끊어진 Symlink 찾기
최신 버전의 find 가지고 xtype (확장 유형) 옵션, 깨진 심볼릭 링크 찾기를 단순화합니다. 우리는 l 플래그 xtype, 링크를 검색하도록 지시합니다. 사용 find 과 xtype 다음과 같이 다른 것없이 type 깃발, 힘 xtype 끊어진 링크를 반환하려면 :
find . -xtype l

테스트 홈 디렉토리에서 명령을 실행하면 깨진 심볼릭 링크가 꽤 많이 발견됩니다. 검색은 기본적으로 재귀 적이므로 모든 하위 디렉터리를 자동으로 검색합니다.
우리가 예상 한대로 의도적으로 분리 한 “hello”심볼릭 링크가 나열됩니다. 다른 심볼릭 링크 중 하나는 Firefox 브라우저와 관련되고 나머지는 스냅과 관련됩니다.
출력을 다음을 통해 파이프하면 wc 와 더불어 -l (lines) 옵션을 사용하면 라인 수를 계산할 수 있습니다. 이는 깨진 심볼릭 링크를 계산하는 것과 같습니다.
다음을 입력합니다.
find . -xtype l | wc -l

아무것도 가리 키지 않는 24 개의 깨진 심볼릭 링크가 있다는 알림을 받았습니다.
찾기, 검토 및 제거
서두르고 깨진 심볼릭 링크를 모두 삭제하기 전에 find 명령. 손상된 심볼릭 링크에 대한 유효한 이유가 있는지 확인하십시오.
때로는 대상 파일이 아닌 심볼릭 링크가 문제 일 수 있습니다. 심볼릭 링크가 잘못 생성 된 경우 아무 것도 가리 키지 않을 수 있지만 실제 대상은 존재합니다. 이 경우 symlink를 다시 만드는 것이 수정됩니다.
파일 잠금 표시기 또는 기타 진행 / 중지 표시기와 같이 명백하게 손상된 심볼릭 링크가 다른 것으로 사용되는 것도 가능합니다. Firefox는이를 수행합니다. 이것이 우리 목록의 첫 번째 심볼릭 링크입니다. 그러나 Firefox는 테스트 시스템에서 사용되지 않으므로 삭제해도 안전합니다.
대상이 주기적으로 만 존재할 수도 있으며 이는 해당 특정 소프트웨어의 예상 (및 원하는) 동작입니다. 대상 파일이 다른 시스템이나 클라우드에서 복사되어 해당 기능을 수행 한 다음 다시 삭제되고 다음주기에 다른 프로그램으로 교체 될 수 있습니다.
손상된 심볼릭 링크는 실패한 소프트웨어 설치의 증상 일 수도 있습니다. 이 경우 심볼릭 링크를 삭제하는 대신 수동으로 수정하거나 설치를 반복해야합니다.
유지해야하는 끊어진 링크를 수정했으면 명령을 반복하여 검색을 수행하십시오. 그러면 고정 된 심볼릭 링크가 검색 결과에 없어야합니다.
안전을 위해 심볼릭 링크 제거를 자신의 디렉토리로 제한하는 것이 가장 좋습니다. 이러한 명령을 루트 또는 시스템 디렉토리에서 실행하지 않도록주의하십시오.
끊어진 Symlink 제거
그만큼 -exec (실행) 옵션은 find 검색 결과. 우리는 사용할 것입니다 rm 깨진 각 심볼릭 링크를 삭제합니다. 그만큼 {} 문자열은 각각의 심볼릭 링크가 발견 될 때 깨진 각 심볼릭 링크의 이름으로 대체됩니다. find.
세미콜론 (;) 원하는 명령 목록을 종료합니다. -exec 실행합니다. 백 슬래시 () 세미콜론을 “이스케이프”하기 위해 세미콜론의 일부로 처리됩니다. find 무엇보다 명령 Bash 행동해야합니다.
다음을 입력합니다.
find . -xtype l -exec rm {} ;

아무 일도 일어나지 않았다는 표시없이 명령 프롬프트로 돌아갑니다. 끊어진 링크가 제거되었는지 확인하기 위해 다음과 같이 명령을 반복하여 찾습니다.
find . -xtype l

일치하는 결과가 없습니다. 이는 끊어진 심볼릭 링크가 제거되었음을 의미합니다.
먼저 검토하는 것을 잊지 마십시오
다시 말하지만, 심볼을 삭제하는 명령을 실행하기 전에 항상 시간을내어 심볼릭 링크 목록을 검토하십시오. 명령을 실행하여 적절한 디렉토리에서 삭제하여 확실하지 않은 항목을 삭제하지 않도록 할 수 있습니다.
예를 들어, 위의 “.snap”디렉토리에서 명령을 실행 한 다음 단독 “hello”심볼릭 링크를 수동으로 제거 할 수 있습니다. 이것은 Firefox 잠금 심볼릭 링크를 그대로 두었을 것입니다.








