parallel
запускает оболочку (какая именно зависит от контекста, в котором она вызывается, как правило, при вызове из оболочки это одна и та же оболочка) для анализа объединения аргументов.
Итак:
parallel debug-call 'a b' {} ::: 'a b' c
совпадает с
parallel 'debug-call a b {}' ::: 'a b' c
parallel
будет вызывать:
your-shell -c 'debug-call a b '
Где — это аргументы (надеюсь), правильно указанные для этой оболочки. Например, если это оболочка
bash
, она будет работать
bash -c 'debug-call a b a\ b'
Здесь вы хотите:
parallel 'debug-call "a b" {}' ::: 'a b' c
Или
parallel -q debug-call 'a b' {} ::: 'a b' c
Где parallel
будет цитировать аргументы (в правильном ( надеюсь) синтаксис для оболочки) перед объединением.
Чтобы избежать вызова оболочки в первую очередь, вы можете вместо этого использовать GNU xargs
:
xargs -n1 -r0 -P4 -a <(printf '%s\0' 'a b' c) debug-call 'a b'
Это не вызовет оболочку (и ни одну из многих команд, запускаемых parallel
при инициализации), но вы не сможете воспользоваться какими-либо дополнительными функциями parallel
, такими как изменение порядка вывода с помощью -k
.
Вы можете найти другие подходы в Фоновое выполнение в параллельном режиме
Это невозможно, поскольку LUKS
/ dm-crypt
/ cryptsetup
страница часто задаваемых вопросов говорит :
2.15 Могу ли я изменить размер раздела dm-crypt или LUKS?
Да, можно, поскольку ни dm-crypt, ни LUKS не хранят размер раздела.
Если информация о размере не сохранена, то невозможно проверить, доступна ли вся информация.
Я спросил, что изменяется, если информация о размере не сохраняется здесь .