1:1 копируют с dd

[12163] find[118640] является собственной программой. Аргумент к [118641]-exec[118642] - это другая команда. Когда команда типа [118643]find ... -exec foo {} \;[118644] выполняется, оболочка имеет в качестве подпроцесса [118645]find[118646], а каждый экземпляр [118647]foo[118648] является подпроцессом [118649]find[118650]. Команда [118651]exit[118652] существует только как сборка оболочки, а не как независимая команда; программа [118653]exit[118654] была бы невозможна, так как ей пришлось бы делать выход из родительского процесса.[12164] Таким образом, решение вашей непосредственной проблемы состоит в том, чтобы заставить [118655]find[118656] сообщить, нашёл ли он файл или нет, и заставить оболочку выйти, если есть совпадение. Вы не можете использовать статус возврата [118657]find[118658], так как он считает отсутствие какого-либо совпадения причиной успеха. Вместо этого проверьте вывод.[12165]Здесь файл должен быть обычным файлом, если он вообще существует. Однако, в общем случае, файл может быть каталогом, и в этом случае [118659]find[118660] будет его пересекать. Поэтому скажите [118661] найти[118662], чтобы он остановился, когда найдет совпадение.[12166] Однако, полученный скрипт не является надежным. Вы неправильно реализуете блокировку. Если два экземпляра скрипта запускаются почти в одно и то же время, то можно иметь, например:[12167]Script 1 запускается, не видит файла [118813]restarting_server[118814], и начинает работать весело.[12168]Script 2 запускается, не видит файла [118815]restarting_server[118816], и начинает работать весело. [12169]Сценарий 1 видит, что сервер не работает, и решает перезапустить его.[12170]Сценарий 2 видит, что сервер не работает, и решает перезапустить его.[12171]Сценарий 1 создает [118817]/tmp/restarting_server[118818]. [12172]Сценарий 2 обновляет метку времени на [118819]/tmp/restarting_server[118820].[12173]Сценарий 1 вызывает [118821] перезагрузку сервера службы [118822].[12174]Сценарий 2 вызывает [118823] перезагрузку сервера службы [118824].[12175]Сценарий 1 удаляет [118825]/tmp/restarting_server[118826]. [12176]Сценарий 2 вызывает [118827]rm -f /tmp/restarting_server[118828], который ничего не делает.[12177]Вызов [12178]flock[12179] для реализации правильной блокировки.[12180]Для аннулирования блокировки при перезагрузке не требуется таймаут, так как блокировка удерживается в памяти.[118208].
1
15.06.2014, 22:22
3 ответа

Да, это должно быть хорошо. Обязательно размонтируйте свой диск сначала и убедитесь, что в целевом каталоге достаточно места. / TMP - это TMPFS в памяти, а не на диске в некоторых системах, посмотрите на выход , чтобы проверить .

На корневой оболочке вы также можете просто сделать:

cat /dev/sdb >/tmp/file
6
27.01.2020, 23:10

В качестве альтернативы просто скопируйте его:

cp /dev/sdb /tmp/sdb.img

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

7
27.01.2020, 23:10

Есть информативная статья на арке EDRO Wiki здесь

-
1
27.01.2020, 23:10

Теги

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