Я пишу утилиту, которая должна запускать mkfs
для форматирования блочного устройства.
Я использую пакет go exec
для запуска правильной команды mkfs
для каждого типа файловой системы, например, в случае ext2:
err := exec.CommandContext(ctx, "mkfs.ext2", "-F", path).Run()
К сожалению, если блочное устройство уже отформатировано, mkfs
запросит подтверждение (и зависнет). Это означает, что я вынужден пропустить опасный флаг -F
, чтобы пропустить эту проверку, теряя данные, если устройство уже было отформатировано.
Я не могу добавить тайм-аут в контекст, потому что форматирование может занять некоторое время по другим причинам, чем это подтверждение.
Я не могу найти флаг mkfs
, который возвращает ошибку вместо проверки подтверждения, если блочное устройство уже отформатировано.
Я бы предпочел не полагаться на синтаксический анализ выходных данных команды mkfs
, чтобы узнать, запрашивает ли она проверку подтверждения, так как это может привести к сбою при изменении вывода mkfs
.
Есть ли способ прервать выполнение команды с правильным сообщением об ошибке, если блочное устройство уже отформатировано, а не зависает при этой проверке подтверждения?