폴더가 실제로 심볼릭 링크인지 어떻게 알 수 있습니까? 폴더가 손상된 경우 어떻게 수정합니까?


28

Linux에서 심볼릭 링크, 바로 가기 또는 폴더가 있는지 어떻게 알 수 있습니까? 다음 스크린 샷을 참조하십시오.

리눅스 쉘의 심볼릭 링크

보시다시피 ls 명령은 일부는 진한 파란색으로 표시되고 다른 일부는 연한 파랑 (청록색)으로 표시됩니다. 이 청록색 물체는 무엇입니까? 이 실제 심볼릭 링크입니까?

보시다시피, cdhdd라는 사람 에게는 할 수 없습니다 .

root@dm500hd:/# cd hdd
-sh: cd: can't cd to hdd

나는 그것이 리디렉션해야한다고 생각 /media/hdd하고 hdd 폴더가 누락되었음을 알았습니다.

이 문제를 해결하는 방법이 있습니까?

업데이트 :ls -al 명령 결과는 다음과 같습니다 .

리눅스 쉘 2의 심볼릭 링크

보시다시피 hdd -> /media/hdd빨간색으로 표시됩니다. 이것은 물리적 인 하드 디스크가 연결되었을 때 고장 났거나 자동 마운트 된 것을 의미합니까?

업데이트 : 다음은 grep media /etc/auto*명령 결과입니다 .

리눅스 쉘 3의 심볼릭 링크

이것들 /etc/auto.master:/media/net/etc/auto.network항목들은 무엇을 하는가?

다음은 ls -Fal /media명령 결과입니다 .

리눅스 쉘 4의 심볼릭 링크

도움이 되셨습니까? ...

다음은 / usr 및 / bin의 목록뿐만 아니라 결과 statfile명령입니다.

리눅스 쉘 5의 심볼릭 링크

이것은 어떤 식 으로든 나를 도와 줍니까?

아니, 당신이 알아야 할 것은 BusyBox가있는 Linux 기반 STB이며 임베디드 시스템이라는 것입니다. 모든 명령이 지원되는 것은 아닙니다.

업데이트 : / sbin 및 / usr / sbin의 파일 및 지원되는 명령을 보여주는 마지막 스크린 샷

리눅스 쉘 6의 심볼릭 링크

업데이트 : 새로운 공유 추가 ...

이제 이전 공유를 제거하고 이전과 동일한 이름으로 다시 공유하고 두 번째 공유도 추가했습니다. 이제 두 가지가 있습니다.

SHARES
remote share   local share
mydream        dream1
mydream2       dream2

LOCATIONS
remote        local
C:\mydream    /media/net/dream1
C:\mydream2   /media/net/dream2

녹화는 / media / net / dream1 / movie에 있습니다.

또한 공유 dream2의 경우 마운트 관리자에서 HDD 교체 용으로 마운트하지 않기로 선택했습니다. HDD로 둘 이상의 역할을 수행 할 수없는 것 같습니다. 어디에 기록합니까? 두 위치 모두에? 데이터 속도가 두 배로? ... 가능하지 않다고 생각합니다.

따라서이 이유로 dream2 공유에 대해 movie라는 하위 폴더가 없습니다. 생성시 HDD 교체로 지정된 것만 동영상 하위 폴더를 가져옵니다.

내가 cd루트에서 hdd하면로 이동합니다 /media/net/dream1. 나는 경우 cd..(부모)이 되돌아갑니다 root (/).

루트에서 ls -al제공합니다 hdd -> media/hdd. ls -al hdd제공합니다 hdd -> media/hdd. ls -al media제공합니다 /media/net/dream1.

또한, 나는 경우 cd/media또 다른이 hdd심볼릭 링크. 전에는 눈치 채지 못했습니다. 공유가 마운트되면 자동으로 생성됩니다. 그리고 내가이 cdhdd에 가면/media/net/dream1 .

hdd다른 hddsymlink (/ media / hdd)를 가리키는 symlink (/ hdd) . 공유 폴더 (/ media / net / dream1)? .....를 가리 킵니다. 현기증이 나고 있습니다 ...

Enigma2 이미지 버전 3.2.3 또는 3.2.0 이전에는 이와 같지 않았습니다.

편집 : HDD 교체 역할을 할 두 번째 공유를 설정하면 녹화 용 활성 공유가됩니다. 동시에 HDD 교체로 작동하도록 이전에 설정된 공유는 여전히 "예"(HDD 교체로 작동)로 설정되어 있어도 더 이상 활성화되지 않습니다.

dream1이 HDD 교체로 처음 사용 된 경우 (예 : 교체로 작동하려면 "yes") dream2가 HDD 교체로 작동하도록 설정된 경우 녹화의 새로운 공유가됩니다. 여전히 dream1에 저장된 비디오 파일을보고 볼 수 있지만 더 이상 기록 할 수 없습니다. 녹화를 위해 dream1을 다시 사용하려면 먼저 dream2를 "no"로 설정하고 (HDD 교체 기능을 중지) dream1을 "yes"로 재설정해야합니다.

따라서, 동시에 두 주식에 기록 할 수 없습니다. 그들 중 하나는 가야합니다. 따라서 dream1 또는 dream2입니다. 둘다는 아닙니다. 둘 다 동일한 트랜스 폰더에있는 경우 둘 이상의 서비스 (tv 채널)를 기록 할 수 있지만 "무료 튜너 없음"메시지가 표시되는 경우에는 언급 할 수 있습니다. 튜너가 하나만있는 STB입니다.


3
텍스트 스크린 샷을 붙여 넣지 마십시오. 대신 텍스트를 복사하여 붙여넣고 사전 또는 코드 태그 또는 백틱을 사용하여 들여 쓰기 / 포맷을 유지하십시오. 표시하려는 내용을 표시하는 데 필요한 최소값까지 텍스트를 편집하십시오. BTW, 스크린 샷의 한 가지 문제는 작은 글꼴이 더 작아 져 읽을 수없는 지점까지 고해상도 화면 (예 : 1920x1200 또는 2566x1440)에서 볼 때 픽셀이 고정되고 텍스트 크기를 조정할 수 있다는 것입니다.
cas

@CraigSanders Sanders 당신은 높은 해상도입니다! ;) 유쾌하게, 나는 당신의 남자를 듣는다! 나는 그 측면에 대해 정말로 생각하지 않았습니다. 팁 고마워. 다음에 코드 블록을 사용해 보겠습니다.
Samir

무엇 ls -al진짜로하는 것은 긴 (-l) 목록에있는 모든 파일을 (-a)를 표시합니다. 예, 자세한 정보를 제공하지만 심볼릭 링크를 식별하는 데 도움이됩니까? 오른쪽에 화살표가 있으면 기호 링크인지 어떻게 알 수 있습니까? 다른 식별자는 분명히 색상 코드이지만 일부는 색상을 신뢰할 수 없음을 제안합니다.
Samir

이것은 더 이상 문제가되지 않습니다. Mount Manager 플러그인 (Dreambox, Enigma 2, 릴리스 3.2.3)을 통해 Windows CIFS 공유를 마운트했으며 HDD 교체로 사용하기로 선택했습니다. 이 작업을 수행 한 후 ls -al명령이 표시되었습니다 hdd -> media/hdd. 이제 cdhdd 가 가능 하고 링크가 작동합니다. 그러나 흥미로운 점 ls -al media은 쇼 hdd -> /media/net/mydream이며 이것은 실제로 내가 cdhdd를 할 때가는 곳 입니다. "mydream"은 주식의 이름입니다. 왜 다른 결과를 얻습니까?
Samir

내 생각에 / hdd symlink가 장치 또는 공유가 마운트 된 모든 것을 가리 키도록 업데이트 할 수있는 메커니즘이있을 수 있으므로 다른 프로그램과 스크립트는 / hdd를 사용할 수 있습니다 (디렉토리를 테스트 한 후) 마운트 된 fs)를 가리 킵니다. 호기심에서 두 번째 드라이브 또는 공유를 마운트하면 어떻게됩니까? / hde 심볼릭 링크를 만드나요? 또는 dreambox가 하나의 기록 디렉토리로 제한됩니까?
cas

답변:


29

file, stat 또는 ls를 사용할 수 있습니다.

파일:

file 명령은 파일 유형 (symlink, directory, device) 또는 내용 (확장자에 관계없이 text, gzip, image, tar, ...)을 기준으로 파일을 분류하는 데 사용됩니다.

$ 파일 / dev / stdout
/ dev / stdout :`/ proc / self / fd / 1 '에 대한 심볼릭 링크
$ 파일 / proc / self / fd / 1
/ proc / self / fd / 1 :`/ dev / pts / 0 '에 대한 심볼릭 링크
$ 파일 / dev / pts / 0
/ dev / pts / 0 : 특수 문자 (136/0)
$ 파일 / etc / passwd
/ etc / passwd : ASCII 텍스트

LS :

$ ls -al / dev / stdout
lrwxrwxrwx 1 루트 루트 15 1 월 27 일 07:55 / dev / stdout-> / proc / self / fd / 1

통계 :

stat 명령은 권한, 크기, 블록 수 등과 같은 파일 메타 데이터를 인쇄합니다.

$ stat / dev / stdout
  파일 : '/ dev / stdout'-> '/ proc / self / fd / 1'
  크기 : 15 블록 : 0 IO 블록 : 4096 기호 링크
장치 : 5h / 5d Inode : 1212 링크 : 1
액세스 : (0777 / lrwxrwxrwx) Uid : (0 / 루트) Gid : (0 / 루트)
액세스 : 2014-01-27 11 : 22 : 47.971187828-0200
수정 : 2014-01-27 07 : 55 : 13.996981285 -0200
변경 : 2014-01-27 07 : 55 : 13.996981285 -0200
 출생 :-

무엇을 file hdd의미합니까? 나는 그것을 얻지 못한다 ...
Samir

stat hdd저를 준다 -sh: stat: not found.
Samir

나는 당신이 stat 명령을 가지고 있지 않다고 생각합니다 (또는 $ PATH에 없습니다). 어쨌든 파일 명령은 당신에게 총을 줄 수 있습니다 ...
filipenf

Mac 터미널의 bash의 경우 file 명령은 기본적으로 심볼릭 링크를 따릅니다. symlink인지 확인하려면 -h 명령을 추가하십시오. 심볼릭 링크를 따르지 않는 것.
ClintM

7

세게 때리다:

if [[ -h dirname ]]; then
    echo "it's a symbolic link"
    if ! stat $(readlink dirname) &>/dev/null; then
        echo "link target does not exist"
    fi
fi

3

주어진 파일이 어떤 종류의 엔티티인지 확인하는 가장 쉬운 방법은 file명령 을 사용하는 것 입니다. 당신이 무엇을 기억할 필요없이 명확하고 제정신 출력ls분류기 표시가 하거나 사용자마다, 기계마다 다를 수있는 컬러 출력에 의존 출력이 가능합니다. 예를 들면 다음과 같습니다.

mail ~ # file /test
/test: broken symbolic link to `/nonexist'
mail ~ # file /dev
/dev: directory
mail ~ # file /dev/fd
/dev/fd: symbolic link to `/proc/self/fd'

없이 당신은 시스템에 자신을 찾을 경우, file당신은을 사용할 수 있습니다stat 어떤 종류의 파일 항목과 그것이 가리키는 위치를 알려주 명령을 . 링크가 끊어 졌는지 확인하려면 링크 stat -L를 역 참조하여 실행해야합니다 . 링크가 끊어지면 오류가 발생합니다.

질문의 두 번째 부분과 같이 media디렉토리는 종종 일종의 자동 마운터에 의해 관리됩니다. 이 /media/hdd항목은 시스템에서 USB 대용량 저장 장치로 사용하거나 올바른 종류의 하드 드라이브를 기다리는 중일 수도 있습니다 (ATA vs SCSI vs Xen 블록 장치). 깨진 링크는 프로그램에서 사용하려고 시도하지 않는 한 아무 것도 아프지 않으며 미디어 링크는 사용자 편의를위한 것입니다. /hdd링크를 안전하게 두거나 원하는 대로 제거 할 수 있습니다.


당신 말이 맞아, 여기 file이 명령이 아닌 것처럼 보입니다 . -sh: file: not found내가 file하고 입력 할 때 말합니다 .
Samir

$ PATH와 같은 소리는 약간 제한되어 있습니다. 대신 직접 실행 해보십시오./usr/bin/file
joruffin

다른 의견에서 당신이 셋톱 박스에 있다는 것을 알았습니다. Busybox 이외의 다른 것이 설치되어 있지 않을 수 있으며 Busybox는 file명령을 에뮬레이트하지 않지만 명령 stat이 컴파일 된 경우 명령 을 지원합니다 . 여전히 $ PATH 외부에 있거나 / sbin / stat 또는 / usr / sbin / stat.
joruffin

이 중 하나에 대한 지원이처럼은 보이지 않는다 file또는 stat. 언급 한 경로를 확인했습니다 (위 스크린 샷 참조). 어쨌든 ... 당신이 말하는 것은 이상적인 Linux 시스템에서 file명령과 대상 파일 또는 폴더의 검색 경로가 어떤 종류의 엔티티인지를 알려주는 것입니다.
Samir

2
Busybox에서 지원되는 명령 /usr/bin/busybox은 명령이 설치되어 있지 않아도 실행할 수 있으며 지원되는 모든 명령을 표시합니다. busybox 명령을 사용하려면 다음을 실행할 수 있습니다 /usr/bin/busybox <command> <parameters>. 따라서 stat 명령을 지원한다고하면 실행할 수 있습니다 /usr/bin/busybox stat /hdd. 쉽게 사용할 수 있도록 Busybox에 대한 심볼릭 링크를 생성 할 명령 이름으로 만들 수 있습니다. stat 명령을 지원하면로 쉽게 실행할 수 있습니다 ln -s /usr/bin/busybox /usr/bin/stat.
joruffin

1
  1. 예 시안은 심볼릭 링크입니다
  2. 그들이 가리키는 곳을 보려면 : ls -Fal
  3. 산출 ls -Fal /media

이것은 아마도 어떤 종류의 자동 마운트 지점입니다.

grep media /etc/auto* 적중을 일으킬 수 있습니다.


자동 마운트 포인트 란 무엇입니까? 물리적 SATA 디스크 드라이브를 연결하면이 지점에 마운트됩니까? ... 이것은 Linux STB이며 내장 HDD는 없지만 후면에 eSATA 포트가 있습니다. 이것은이 목적을 위해 바쳐 질 수 있습니다.
Samir

@Sammy Yes /media는 PnP 장치의 표준 마운트 지점입니다.
Nils
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.