Как найти и удалить битые символические ссылки в Linux

Бывает часто необходимо проверить свободное место на диске через терминал, без утилиты df не обойтись. Она означает «Disk Free» — использование дискового пространства. Может выводит не только свободное место на диске, но и точку монтирования, список устройств, которые подключены к файловой системе.

Синтаксис

Рассмотрим синтаксис утилиты.

df параметры устройство

Посмотрим, что говорит справка —help.

Результат выполнения df —help

Основные параметры:

  • -a, —all. показать все файловые системы.
  • -h. Опция позволяет показать информацию более наглядной. Размеры выводятся в мегабайтах и гигабайтах.
  • -H. Размеры показываются в гигабайтах.
  • -k. Данная опция показывает на экране терминала размеры в килобайтах.
  • -t, —type. Выводит информацию только про указанную файловую систему.
  • —total. Опция показывает всю информация о дисковом пространстве.

Примеры

Для примера можно просто ввести df без аргументов.

Как видно на скриншоте выше, утилита показала в командной строке информацию о дисковом пространстве, однако выполнения команды в таком варианте есть один большой недостаток. Размеры выводятся в килобайтах (1K-blocks). Чтобы улучшить наглядность выполним:

df -h

Здесь видим:

Синтаксис
  • Filesystem — файловая система;
  • Size — размер в мегабайтах, показывается вся емкость точки монтирования;
  • Used — сколько использовано дискового пространства;
  • Avail — сколько осталось место в мегабайтах;
  • Use% — аналог столбца «Used», только информация выводится в процентах;
  • Monted on — точка монтирования.

Если не хватает места в какой-нибудь точке монтирования, то обычно используют символьные ссылки. В нашем примере в столбце «Use%» 100%  стоит /lib/live/mount/medium.

Символьная ссылка — это файл или каталог, который ссылается на другой файл или каталог.

Синтаксис для создания мягкой ссылки:

ln -s <источник> <название ссылки>

Читайте также:  Абонентское обслуживание компьютеров и серверов

Также можно вывести размер одного конкретного диска.

df -h /dev/sr0

Следующий вариант использования утилиты — вывод информации только с файловой системой «udev».

df -t udev

Вместо udev можно написать etxt4 или любой другую Filesystem.

В итоге можно сказать, что утилита наиболее часто используется на серверах в командной строке, так как в графической оболочке очень много способов узнать объем свободного места без использования терминала.

Файловые команды

  • basename — Удаляет любой путь и указанный суффикс из имени файла (получает имя файла)
  • cd dir – сменить директорию на dir, при этом, если в текущем  каталоге нет подкаталога dir, то поиск dir происходит по каталогам, указанным в переменной $CDPATH
  • cp file1 file2– скопировать file1 в file2
    • -r – рекурсивно
    • -f или —force — попытаться удалить существующую цель, если в нее нельзя записывать.
    • -i или —interactive — интерактивно подтвердить попытку замещения существующего файла
    • -b или —backup — сделает резервную копию файлов, которые будут замещены.
    • -p — сохранить атрибуты копируемого файла (время, права и т.п.)
  • csplit — Разбивает заданный файл на несколько новых файлов в соответствие с заданными образцами или номерами строк и выдает количество байтов в каждом новом файле
  • ddif=/source/device of=/target/device bs=blocksize count=кол-во_блоков — копирование и преобразование файлов
  • dirname — Удаляет из имени файла суффикс, не являющийся директорием (получает имя каталога — путь)
  • ln file link – создать хардлинк link к файлу file
    • -s – создать символическую ссылку
  • ls– список файлов и каталогов
    • -a – со скрытыми
    • -l — форматированный одноколоночный список (выводится тип файла, права доступа к файлу, количество жестких ссылок на файл, имя владельца, имя группы, размер файлаr (в байтах), временной штамп и имя файла. Типы файлов могут принимать следующие значения: — для обычного файла, d для каталога, b для блочного устройства, для символьного устройства, l для символической ссылки, p для PIPE (FIFO) и s для гнезда (socket).
    • -h — отображение размеров в человекопонятном (от human) виде (10M, 15K)
    • -i — вывод inode элементов
    • -t — сортировка по дате модификации (от старых к новым)/time
    • -S — отсортировать по размеру (от больших к маленьким)/size
    • -r — сортировка в обратном порядке
    • -R — список с подкаталогами
  • md5sum — Выводит или проверяет контрольные суммы Message Digest 5 (MD5)
  • mkdir dir – создать каталог dir
    • -p /path/to/three/{dir1,dir2,dir3} создание нескольких каталогов dir1,dir2,dir3 в каталоге /path/to/three/
    • -m permission — указание прав permission на создаваемый каталог
  • mv file1 file2 – переименовать или переместить file1 в file2. если file2 существующий каталог — переместить file1 в каталог file2
  • nl — Сообщает о количестве строк в указанных файлах
  • pwd – показать текущий каталог
  • readlink — Выдает значение указанной символической ссылки
  • rm file – удалить file
    • -r – удалить каталогь
    • -f – удалить форсированно (без запроса)
    • -i или —interactive — интерактивно подтвердить попытку удаления файла
  • stat — Отображает статус файла или файловой системы
  • touch file – обновить время доступа к файлу file или создать file, если его нет
    • -c или —no-create — не создавать файл, если его не существует.
    • -d или -t — изменить время на указанное (формат указания времени в man touch)
  • more file – вывести содержимое file с возможностью прокрутки вверх/вниз
  • less File — аналог more
  • tee file — вывод данных, получаемых со стандартного ввода на стандартный вывод И в файл file. (команда называется «тройник»)
  • fuser file — идентифицирует (если без параметров — отображает PID) процессы, использующие файл file
  • head file – вывести первые 10 строк file

Вывод

В данной статье мы ознакомились со следующими командами:

  • head — просмотр первых n строк данных.
  • tail — просмотр последних n строк данных.
  • sort — организуйте данные в порядке.
  • nl — напечатайте номера строк перед данными.
  • wc — распечатать количество строк, слов и символов.
  • cut — разрезать данные на поля и отображать только указанные поля.
  • sed — сделайте поиск и замените данные.
  • uniq — удалить дубликаты строк.
  • tac — распечатайте данные в обратном порядке.

Нахождение сломанных символических ссылок

У команды find есть опция, которая позволяет вам найти символические ссылки, которые указывают на файлы, которые больше не существуют. Эта команда перечисляет символические ссылки в текущем каталоге:

$ find . -type l

буква l указывает команде поиска искать символические ссылки.

Команда, показанная ниже, с другой стороны, ищет в текущем каталоге символические ссылки, которые указывают на файлы, которые не существуют:

$ find . -xtype l

Чтобы избежать ошибок, когда команда пытается просмотреть файлы или каталоги, на которые у вас нет разрешения, вы можете отправить весь вывод ошибок в /dev/null следующим образом:

$ find . -xtype l 2>/dev/null

Вы также можете найти неработающие символические ссылки с помощью такой команды. Она длиннее предыдущей, но делает тоже самое:

$ find . -type l ! -exec test -e {} \; -print 2>/dev/null