Как проверить, смонтирован ли/proc/

для получения информации о CPU

cat /proc/cpuinfo

для использования диска

df -h

для плат PCI и шин

lspci

можно найти lshw полезный

если Вам нужны USB-устройства

lsusb

7
06.07.2011, 14:41
4 ответа

Можно работать mount без любых аргументов для получения списка текущего монтирования. /etc/mtab файл должен иметь подобные данные, но как Вы сказал, что для этого возможно быть несовместимым тому, что на самом деле смонтировано если /etc файловая система испорчена, не перезаписываемый, или другая программа смешала с нею. Можно получить определенную информацию о proc, монтируется путем выяснения mount перечислять всех монтируется типа proc как это:

mount -l -t proc

Править: Похоже, что можно использовать stat сравнить устройство /proc папка к устройству / для сообщения, по крайней мере, если ЧТО-ТО смонтировано там кроме корневой файловой системы:

[[ $(stat -c %d%D /proc) != $(stat -c %d%D /) ]] && echo "Something is mounted at /proc"
8
27.01.2020, 20:16
  • 1
    Это - действительно один способ сделать это. Риск здесь является выполнением команды монтирования, мог бы застрять на различном проблематичном монтировании как доли NFS/CIFS, которые разъединяются. –  freddie 06.07.2011, 14:48
  • 2
    @freddie: это на самом деле застревает, если Вы просите, чтобы это для списка смонтировалось типа proc как, я показал? У меня нет случая, который я могу протестировать прямо сейчас, но если бы он прилично реализован, я не вижу, почему он завис бы при сканировании состояния nfs, монтируется, если спросили перечислить только proc, монтируется. Обратите внимание, что я НЕ рекомендовал работать mount | grep proc по просто той причине. –  Caleb 06.07.2011, 14:51
  • 3
    я должен буду протестировать его, но я соглашаюсь, если это реализовано правильно, монтирует, что-l не должен застревать, и в этом случае это - хорошее решение. Хотя, смонтируйте, что-l возвращает код возврата 0, если он находит точку монтирования (или больше) или если он не находит его. Таким образом, проверка является далее сложной при помощи монтирования-l-t proc |wc-l и проверяющий, сколько файловых систем является возвращенным :( –  freddie 06.07.2011, 14:56
  • 4
    @freddie: посмотрите мое редактирование для другого решения. Также Вы могли использовать строковый тест на монтировании без рабочего туалета: [[ -n $(mount -l -t proc) ]] –  Caleb 06.07.2011, 15:06

Тест для существования /proc/mounts. Выполнение mount бесполезно потому что если /proc не смонтирован, это возвратит потенциально устаревшие данные из /etc.

В теории могло бы быть что-то еще в /proc. Но это крайне маловероятно на практике: если /proc/mounts существует и /proc не proc файловая система, Вы ничему не можете доверять о своей среде так или иначе. Если Вы действительно волнуетесь, можно проверить, что тип файловой системы proc: df -PT /proc | awk 'NR==2 && $2=="proc" {print 1}' (требует утилит Linux df, нет никакой соответствующей опции в Busybox). С другой стороны, в теории, могла быть proc файловая система, смонтированная в другом месте; нет никакого простого способа найти это с командами оболочки (df чтения /proc/mounts перечислить файловые системы). На практике просто проверьте на /proc/mounts.

3
27.01.2020, 20:16

Если Вы хотите (более или менее) гарантия, что файловая система на/proc на самом деле proc вместо некоторой другой файловой системы или структуры каталогов, сделанной быть похожей на него, можно звонить statfs() и проверьте тип, 0x9fa0 значение для proc.

2
27.01.2020, 20:16

Полагаю, есть более короткий путь:

svcs network/shell | awk '/online/ {system("bash -c \"compare_ser "$1"\"")}'

Уважаемые даунвотеры, можете ли вы объяснить свое решение? Вы поняли, что такое Linux на самом деле? Сценарий выше - это рабочий фрагмент, и, возможно, существует миллион способов сделать то же самое. Поэтому я прошу объяснений.

-121--197908-

Кроме исправления PS1 можно убедить приложения не выдавать эти непечатаемые символы путем экспорта подходящего значения в переменную среды TERM . Возможно, каноническая функция export TERM = dumb в начале сеанса script (или TERM = dumb script < args > при вызове). Предполагая, что вы создаете PS1 с помощью tput , последнее также может работать на это.

-121--133228-

Существует инструмент под названием mountpoint , доступный во многих установках linux. Код выхода равен 0, если первым аргументом является точка монтирования.

0
27.01.2020, 20:16

Теги

Похожие вопросы