Як визначити, чи папка насправді є символьною посиланням і як її виправити, якщо вона зламана?


28

Як визначити, чи є у мене синхросигнал, ярлик якогось типу чи папка в Linux? Перегляньте наступний знімок екрана.

символічне посилання в оболонці Linux

Як бачите, lsкоманда перераховує об'єкти, де одні пофарбовані в темно-синій колір, а інші - світло-синій (блакитний). Які ці блакитно-кольорові предмети? Це фактичні символічні посилання?

Як бачите, я не можу cdдо того, що називається hdd.

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

Я думаю, що це має переспрямуватись, /media/hddі я помітив, що папка hdd відсутня.

Чи є спосіб це виправити?

Оновлення: Ось результати ls -alкоманди.

символічне посилання в оболонці 2 Linux

Як ви бачите, це говорить, hdd -> /media/hddі воно забарвлене в червоний колір. Чи означає це, що він зламаний або він автоматизований, тобто коли підключений фізичний hdd?

Оновлення: Ось результат grep media /etc/auto*команди.

символічне посилання в оболонці Linux

Що роблять ці записи /etc/auto.master:/media/netта /etc/auto.networkзаписи?

Ось результати ls -Fal /mediaкомандування.

символічне посилання в оболонці Linux 4

Чи це допоможе? ...

Ось результати statта fileкоманди, а також списки / usr та / bin.

символічне посилання в оболонці Linux 5

Чи допомагає це мені в будь-який спосіб? ... Чи допомагає ти мені допомагати? ...

З іншого боку, ви повинні знати, що це STB на базі Linux з BusyBox, це вбудована система. Тому не всі команди можуть підтримуватися.

Оновлення: Останній скріншот, який відображає файли та підтримувані команди в / sbin та / usr / sbin.

символічне посилання в оболонці Linux 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.

Крім того, для dream dream2 я вирішив не монтувати його як заміну жорсткого диска в Mount Manager, оскільки я підозрюю, що не можна мати більше одного дії як жорсткого диска. Де це було б записано? В обидва місця? З подвоєною швидкістю передачі даних? ... Я не думаю, що це можливо.

Тож з цієї причини для пайок мрії2 немає папки з назвою фільм. Лише ті, які вказані як заміна жорсткого диска при створенні, отримують підпапку фільму.

Якщо я cdhdd від root, він переходить до /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симпосилання. Я цього раніше не помічав. Я думаю, що це створюється автоматично, коли монтується частка. І якщо я cdдо цього hdd він переходить /media/net/dream1.

Симпосилання hdd(/ hdd), яке вказує на інше hddсимвольне посилання (/ media / hdd), яке, в свою чергу, вказує на папку спільного доступу (/ media / net / dream1)? ..... Мені стає запаморочення ...

Це не було подібним до версії 3.2.3 або принаймні 3.2.0 зображення Enigma2.

Редагувати: за допомогою налаштування другої спільної ділянки, яка виступає заміною жорсткого диска, вона стає активною подією для запису. У той же час частка, яка раніше була встановлена ​​як заміна жорсткого диска, вже не активна, навіть якщо вона все ще встановлена ​​на "так" (виконувати функцію заміни жорсткого диска).

Якщо сновидіння dream1 спочатку було використано в якості заміни жорсткого диска ("так", щоб діяти в якості заміни), а потім dream2 встановлено як заміна жорсткого диска, він стає новою часткою для запису. Я все ще можу бачити та переглядати відеофайли, що зберігаються у dream1, але я більше не можу записувати на нього. Якщо я хочу повернутися, щоб використовувати dream1 для запису, спочатку я повинен встановити dream2 на "ні" (перестати діяти як заміна жорсткого диска), а потім скинути dream1 на "так".

Тому ні, він не може одночасно записувати на дві акції. Один з них має йти. Тож це або сон1, або сон2, не обидва. Хоча я мушу зазначити, що можна записати більше однієї послуги (телевізійного каналу), якщо вони обидва на одному транспондері, якщо ви не отримаєте повідомлення "без безкоштовного тюнера". Це СТБ із лише одним тюнером.


3
будь ласка, не вставляйте скріншоти для тексту. скопіюйте та вставте текст замість цього та використовуйте теги попереднього або кодового коду чи задню панель для збереження відступу / форматування. і відредагуйте текст до мінімуму, необхідного для показу того, що ви намагаєтесь показати. До речі, одна проблема із скріншотами полягає в тому, що крихітні шрифти стають ще крихітнішими - аж до нечитабельних - при перегляді на екранах з більшою роздільною здатністю (наприклад, 1920x1200 або 2566x1440) ... пікселі виправлені, текст можна масштабувати.
cas

@CraigSanders Sanders Ви високий ... на дозвіл! ;) Страшенно, я чую тебе, людина! Я не дуже думав над цим аспектом. Дякую за пораду. Я спробую використати блок коду наступного разу.
Самір

Що ls -alнасправді це - це показує всі файли (-a) у довгому (-l) списку. Так, це дає мені більше інформації, але чи допомагає мені визначити символічне посилання? Якщо на ньому є стрілка праворуч, то як я можу сказати, чи це символічне посилання? Інший ідентифікатор, очевидно, є кольоровим кодом, але деякі з вас припускають, що кольорові не варто довіряти.
Самір

Це вже не проблема. Я змонтував спільну частку Windows CIFS через плагін Mount Manager (Dreambox, Enigma 2, випуск 3.2.3) і вирішив використовувати його як заміну жорсткого диска. Після цього ls -alкоманда показала hdd -> media/hdd. А тепер можна cdhdd і посилання працює. Але що цікаво, це те, що ls -al mediaпоказує, hdd -> /media/net/mydreamі це насправді куди йде, коли я cdдо hdd. "Mydream" - це назва акції. Чому я отримую різні результати?
Самір

Я здогадуюсь, що існує якийсь механізм (можливо, правило udev), щоб переконатися, що / hdd symlink оновлюється так, щоб вказувати на будь-який пристрій або спільний доступ, щоб інші програми та сценарії могли просто використовувати / hdd (після тестування цього каталогу він вказує на встановлену фс). просто з цікавості, що станеться, якщо встановити другий диск або поділитися? Чи робить це / hde symlink? чи сонник обмежений одним каталогом записів?
cas

Відповіді:


29

Ви можете використовувати файл, stat або ls.

файл:

Команда файлів використовується для класифікації файлів на основі їх типу (символьна посилання, каталог, пристрій) або вмісту (текст, gzip, зображення, tar, ..., незалежно від їх розширення):

$ file / dev / stdout
/ dev / stdout: символічне посилання на `/ proc / self / fd / 1 '
$ file / proc / self / fd / 1
/ proc / self / fd / 1: символічне посилання на `/ dev / pts / 0 '
$ file / dev / pts / 0
/ dev / pts / 0: символ спеціальний (136/0)
$ файл / тощо / passwd
/ etc / passwd: текст ASCII

лс:

$ ls -al / dev / stdout
lrwxrwxrwx 1 корінь кореня 15 січня 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 / root) Gid: (0 / root)
Доступ: 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йдеться? Я не розумію ...
Самір

stat hddДає мені -sh: stat: not found.
Самір

Я думаю, у вас немає команди stat (або вона відсутня у вашому $ PATH). У будь-якому випадку команда файлу може дати вам постріл ...
filipenf

Для bash на терміналі Mac команда файлів за замовчуванням слідує символьним посиланням. Якщо ви хочете побачити, чи це символьна посилання, додайте команду -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 проти SCSI проти блок Xen). Пошкоджені посилання нічого не зашкодять, якщо програма не намагатиметься їх використовувати, а медіапосилання справді для вашої зручності. Ви можете сміливо залишити /hddпосилання або видалити його як завгодно.


Ви маєте рацію, схоже, що файл тут не команда, він говорить, -sh: file: not foundколи я це роблю fileі ввожу.
Самір

Звучить на зразок вашого $ PATH трохи обмежено. Спробуйте виконати його безпосередньо замість цього:/usr/bin/file
joruffin

З вашого іншого коментаря я бачу, що ви на телевізорі. Можливо, не встановлено нічого, крім Busybox, і Busybox не емулює fileкоманду, але має підтримку statкоманди, якщо вона була складена в. Вона все ще може знаходитися поза вашим $ PATH або жити десь неясно, як / sbin / stat або / usr / sbin / stat.
joruffin

Не схоже, що у нього є підтримка fileабо stat. Я перевірив у вказаних вами шляхах (див. Знімок екрана вище). У будь-якому випадку ... що ви говорите, це те, що в ідеальній системі Linux fileкоманда, за якою слід шукати цільовий файл чи папку, розкриє мені, що це за сутність?
Самір

2
Що стосується підтримуваних команд у Busybox, ви можете запустити, /usr/bin/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 і в нього немає вбудованого жорсткого диска, але він має порт eSATA на задній панелі. Це може бути присвячене для цієї мети.
Самір

@Sammy Так /media- це стандартна точка кріплення для PnP-пристроїв.
Нілс
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.