Ошибка ввода-вывода при попытке создать моментальный снимок Btrfs

Ваш вопрос настолько плох, что я не могу не присоединиться к этому конкурсу.

Вот моя интерпретация.

checkDirectories() {
    # a logical switch variable for "all directories positive"
    allOk=true
    # as long as there are some arguments
    while [ "$#" -gt 0 ]; do    
        # if not -d, report and change the all-switch
        [ ! -d "$1" ] && echo Fail: "$1" && allOk=false
        # get rid of the first function argument,
        # so that "$2" becomes the new "$1" 
        shift
    done
    # if all ok, report this. otherwise return negative. 
    $allOk && echo "All directories present." || return 1
}

Функция checkDirectoriesпринимает каталоги в качестве аргументов (в командной строке, в сценарии и т. д. ). В отличие от ikkachu , он не возвращается к первому отсутствующему каталогу, а проходит по всему списку. Если все каталоги в порядке, будет напечатано:

All directories present.

В противном случае, если какой-либо каталог отсутствует, он сообщит об этом факте (и для каждого другого отсутствует один):

Fail: directory_name/etc

В конце в этом случае будет возвращен отрицательный результат.

Далее следует демонстрация этой функции в каталоге с подкаталогом bin, но без подкаталога asdf.

$ checkDirectories bin asdf
Fail: asdf
$ echo $?
1
$ checkDirectories bin
All directories present.
$ echo $?
0

Поскольку имена каталогов не жестко -встроены в функцию, вы можете использовать ее с различными списками каталогов. Сюда входят списки переменной длины. (Таким образом, вы можете проверить четыре или десять каталогов, а также только один.)

Надеюсь, мой ответ поможет вам лучше задавать вопросы в будущем.

1
04.03.2017, 15:37
1 ответ

Прошло несколько лет с тех пор, как OP задал этот вопрос, но я наткнулся на это и сегодня... И поскольку и я, и он использовали Fedora, когда это произошло, я полагаю, что это вызвано самим SELinux (ничего удивительного... :D ).

В любом случае, если кто-то еще наткнется на это, попробуйте это:

sudo sestatus | grep -i "current"

Если вы видите enforcing, попробуйте временно отключить SELinux:

sudo setenforce 0

и повторите попытку создания снимка с помощью снаппера ... ;)

ПРИМЕЧАНИЕ.:Я планирую сообщить об этом ребятам из SELinux, чтобы посмотреть, можно ли немного обновить политики SELinux для snapper.

0
03.04.2020, 17:40

Теги

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