sync — утилита Unix, предназначенная для обновления файловых систем и для синхронизации данных на диске с данными в памяти. При этом выполняется системный вызов sync, который вызывает запись всех буферизованных изменений метаданных файлов и данных в базовые файловые системы. Он гарантирует, что все, что хранилось в памяти, будет записано на диск, предотвращая потерю данных, хранящихся в кеше, при аварийном завершении работы.

Также существует связный системный вызов int fsync(int fildes), запрашивающий передачу всех данных для дескриптора открытого файла с именем fildes к устройству хранения, связанному с файлом, описанным fildes .

Описание   sync [--help] [--version] Утилита sync инициирует сброс менеджером файловой системы из оперативной памяти всех измененных индексных дескрипторов и всех незаписанных системных буферов на диск. При этом обеспечивается сохранение всех изменений в файлах на этот запланированный момент. sync сперва записывает индексные дескрипторы (inode) в буферы и затем буферы на диск

В Linux sync всего-лишь гарантирует, что будет составлен список «грязных» блоков, которые нужно записать. Прежде чем они действительно будут записаны, пройдет еще некоторое время. Команды reboot и halt учитывают это, делая паузу в несколько секунд после вызова

После выполнения команды sync необходимо обеспечить достаточную паузу для освобождения очередей драйверов и полного сохранения всех данных на диске. Длительность этой паузы зависит от скорости жесткого диска (дисков), количества буферов, которые необходимо обработать, и активности системы в данный период.

Операция sync расходует незначительный объем ресурсов CPU. Помимо этого, у нее есть следующие преимуществаIBM Knowledge Center:

Компактная запись данных. Запись по крайней мере 28 КБ системных данных, даже если с момента предыдущего вызова sync не было выполнено ни одной операции ввода-вывода. Ускорение записи данных на диск за счет отключения алгоритма отложенной записи. Это свойство особенно важно для тех программ, в которых после каждой операции записи выполняется операция fsync(). Создание при вызове sync() или fsync() записей в протоколе JFS о том, что измененные данные сохранены на диске.

Баги Возврат из системного вызова sync, который вызывает одноимённая утилита, может произойти перед тем как запись будет фактически завершена. Однако, начиная с версии 1.3.30, Linux выполняет ожидание окончания записи, что, однако, не гарантирует целостность данных: современные диски имеют свои собственные большие кэши.

См. также chown ls touch

Примечания

Ссылки

Категория:Утилиты Unix