Двойные квадратные скобки для FreeBSD

Походит на полную дисковую проблему. Если у Вас есть доступ к FTP-серверу, можно подтвердить, полон ли диск следующей команды:

$ df
Filesystem  1K-blocks  Used      Available  Use%  Mounted on
/dev/hda3   76773444   72816084  0          100%  /
/dev/hda1   101086     16327     79540      18%   /boot
/dev/shm    501628     0         501628     0%    /dev/shm

Это показывает, что устройство/dev/hda3 полно. Дополнительно можно зарегистрироваться в файле журнала FTP-сервера:

$ less /var/log/messages

И затем поиск FTP для нахождения любых сообщений с сервера с ошибками о неспособности записать в диск.

3
29.03.2015, 20:57
3 ответа

Ваш выбор распределения действительно зависит от того, на что он будет использоваться, и кто будет вводить его.

RHEL и CONTOS находятся на основании того же ядра, однако RHEL приходит в качестве платной, поддерживаемого продуктом предприятия. Если вам нужна поддержка SLA и A удивительной команды в Red Hat, это, безусловно, будет хорошим вариантом.

Лично я более знаком с дистрибутивом, основанным на Debian, поэтому я склонен использовать Debian для моих серверов, где надежность и безопасность являются ключом. Тем не менее, я не нуждаюсь в SLA или иметь инженеров по вызову.

(Примечание, в основном все распределения Linux подходят для операции 24x7. Я не уверен, что именно вы имеете в виду в режиме реального времени, но у меня есть множество серверов Debian, которые работают 24x7, предоставляя все деловые услуги)

Редактировать:

В ваших комментариях вы просили «высокую доступность без каких-либо сбоев или требуют перезагрузки». Когда у вас есть вычисления, вы всегда имеют возможность сбоя, а вы обычно нужно будет перезагрузить в какой-то момент времени.

Если вам действительно нужно 99,999% безотказной работы (вы не получите гарантию 100% от любого авторитетного провайдера), вы собираетесь захотете географически распределенный кластер серверов ... и снова, большинство больших дистрибутивов Linux быть до этой задачи. ; -)

-121--248039-

[[[ [[[ синтаксис ksh и Bash и отсутствует во всех снарядах. Ваша оболочка FreeBSD по умолчанию, вероятно, Sh Sh (или Bash, действующая вроде SH ), не Bash. Эквивалентный синтаксис, который должен работать на всех снарядах:

case $1 in
        *[/\\] ) echo "Yes";;
esac
2
27.01.2020, 21:10

[[ - это басизм. / BIN / SH не гарантировано, что Bourne снова Shell.

Даже на операционных системах Linux, это может быть шанс Share Shell или совместимая политика обычной оболочкой. На BSDS это не Бурн снова Shell из коробки, потому что на BSDS Bourne снова Shell - это необязательное дополнение к соответствующей операционной системе . Это в Коллекция портов FreeBSD . («Порты» удобны способами создавать дополнительные программы, а не часть FreeBSD, на FreeBSD из этих программ, поддерживаемых внешне исходных репозиторов.)

/ BIN / SH на BSDS - это обычно один из ранних переписываний Борна Отказ На FreeBSD это альмепистская оболочка, как на Debian Linux. (On OpenBSD это korn Shell работает в режиме POSIX.)

Существует простое правило для басизмов:

Если вы используете башизм в вашем скрипте, явно установите / bin / bash Интерпретатор сценария. Если вы вместо этого используете / BIN / SH в качестве интерпретатора скрипта, затем придерживайтесь языка конвертена POSIX .

= ~ - это басизм, а не является частью синтаксиса, соответствующего POSIX для теста . Но здесь регулярное выражение - это сверхугольника, потому что все, что вы, по-видимому, действительно действительно делают, это проверка последнего символа.

Вот предложение Торстена Глазера с 2012 года для выполнения таких вещей:

case $1 in 
    */|*\\)
        wibble ;;
    *)
        wobble ;;
esac

Дальше чтение

5
27.01.2020, 21:10

При изменении метаданных файла (разрешения, владение, метки времени, ...), Вы не меняете каталог, вы изменяете inode файла. Это требует разрешения x в каталоге (для доступа к файлу) и владение файлом (только пользователь, который принадлежит файл, может изменить его разрешения).

Я думаю, что это интуитивно понятно, если вы помните, что файлы могут иметь жесткие ссылки в нескольких каталогах. Каталог содержит таблицу, которая отображает имена файлов для inodes. Если файл связан в нескольких именах в нескольких каталогах, это все еще один inode с одним набором разрешений, владения и т. Д., Что показывает, что метаданные файла находятся в inode, а не в каталоге.

Создание, переименование, перемещение или удаление файла включает в себя изменение каталога, поэтому он требует разрешения на запись на каталог.

-121--86014-

[[[ конструкция не существует во всех SH вариантов. Это КШ, которая была принята Bash и Zsh. SH FreeBSD - это производная зола и не поддерживает [[.

Если вы хотите использовать [[[ [[[ в скрипте, используйте строку Shebang , которая вызывает оболочку, которая поддерживает [[. Вы можете установить Bash или KSH93 или MKSH в качестве пакета на FreeBSD; Все они поддерживают [[. Пакеты устанавливаются под / usr / local / bin , тогда как Bash на Linux почти всегда в / bin ; Вы можете использовать / USR / BIN / ENV , чтобы вызвать программу в пути (это классический взлом). Поэтому, если вы хотите использовать [[[ и другие конструкции Bash, убедитесь, что пакет Bash устанавливается и начнет ваш скрипт с помощью

#!/usr/bin/env bash

, создать символическую ссылку / usr / local / bin / bash -> / bin / bash на Linux и начните сценарии

#!/usr/local/bin/bash

или создать символическую ссылку / bin / bash -> / usr / local / bin / bash на FreeBSD и Начните свои сценарии со #! / Bin / Bash .

В качестве альтернативы, напишите сценарии, которые придерживаются общего ядра SH. Используйте [ вместо [[[. Остерегайтесь, что [ [ - это обычная команда, а не зарезервированное слово, поэтому, в чем в том, что внутри отдельные скобки анализируются нормально, в отличие от того, что внутри двойных кронштейнов - например, вы не можете написать [[Условие1 && условию2] ] Таким же образом с одиночными скобками необходимо написать [Условие1] && [Условие 2] . Простое SH не имеет регулярного сопоставления выражения, но для того, что вы делаете, сопоставление подстановочного знака достаточно:

case "$1" in
  *[\\/]) echo "$1 ends with a slash or backslash";;
  *) echo "$1 does not end with a slash or backslash";;
esac
2
27.01.2020, 21:10

Теги

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