Вы передаете вывод vagrant ssh-config
на стандартный ввод команды ssh
. К тому времени, когда ssh
запускает удаленную команду и подключает удаленный стандартный ввод к локальному стандартному вводу, конец файла уже достигнут. Таким образом, удаленная оболочка видит конец файла на своем стандартном вводе и немедленно завершает работу.
Обычно вы должны передать файл конфигурации в другой файловый дескриптор:
ssh -F <(vagrant ssh-config) default
, но это тоже не работает, потому что ssh
закрывает нестандартные файловые дескрипторы перед чтением своего файла конфигурации. Поэтому вам нужно передать фактическое имя файла процессу ssh
. Это может быть именованный канал, если вы не хотите сохранять вывод vagrant ssh-config
:
mkfifo fifo
vagrant ssh-config >fifo &
ssh -F fifo …
rm fifo
С оболочкой zsh
(доступной по умолчанию в macOS) вы можно использовать форму подстановки команд = (...)
, которая использует временный файл вместо канала, доступ к которому осуществляется через / dev / fd / x
:
ssh -F =(vagrant ssh-config) …
¹ за исключением систем без поддержки / dev / fd / x
, где подстановка процессов реализована с использованием именованных каналов
Нет, нет смысла запускать sync
после (успешного)umount
.
umount уже синхронизирует все ожидающие записи в файловую систему. Команда sync синхронизирует кэшированные данные файловой системы смонтированных файловых систем.
Устройство шифрования dm -, настроенное с помощью LUKS, в настоящее время корректно проходит через команды сброса (, ср. cryptsetup FAQ, пункт 2.13Если я сопоставляю журналируемую файловую систему с помощью dm -crypt/LUKS, предоставляет ли она обычные гарантии транзакций?).