Давайте разберем это.
Umask=
задокументировано в man systemd.exec
. Вы можете узнать, на какой справочной странице он задокументирован, проверив man systemd.directives
. Это задокументировано как:
"Controls the file mode creation mask. "
Вывод, который вы видите в /proc/<pid>/status
, задокументирован в man proc
. Это задокументировано как:
"Process umask".
Итак, во-первых, неясно, является ли то, что вы проверяете, правильной проверкой установленной вами директивы systemd
. Лучшим тестом будет просмотр файла, созданного Docker. Как был создан umask
?
Во-вторых, убедитесь, что ваша директива systemd
действительно вступила в силу. Просмотрите вывод:
systemd-analyze dump
Найдите в выходных данных Docker
, и оттуда вы сможете найти Umask
, который systemd
установил для службы Docker
. Видит ли systemd
ваш umask
так, как вы ожидаете?
Ваш синтаксис systemd
кажется правильным, поэтому я думаю, что это может быть неправильное понимание того, что делает директива Umask=
.
Я думаю, вы можете использовать комбинацию sed
и grep
.
Предположим, что все ваши каталоги 0
, 1
, 2
,... находятся в /your/path
(, например./your/path/0/data.dat
):
for dir in /your/path/*; do
idx=$(basename ${dir})
sed -n '/Configurations for Sm:/,/Configurations for/p' ${dir}/data.dat | \
grep '^ \+0 \+1' | \
sed "s/^/${idx}/" >> "0-1.dat"
done
Первый sed
должен извлекать только интересующую часть файла (между двумя шаблонами Configurations for Sm:
и Configurations for
)
grep
соответствует 0 1
в начале строки (с положительным числом пробелов в -между)
Второй sed добавляет «индекс» (имя каталога )в начале строки.
Вывод добавляется(>>
)к "0 -1.dat".
Вы можете добавить внешний цикл для проверки различных комбинаций 0
и 1
.
Примечание. :Я не проверял это должным образом.