Я пишу резервный сценарий который
Прежде чем я раньше делал sleep(60)
для ожидания минуты так, чтобы данные были автоматически сброшены ядром. То, которое я предполагаю, является излишеством поэтому теперь, я пробую sudo hdparm -F --verbose /dev/disk
но это сообщает об ошибке - HDIO_DRIVE_CMD(flushcache) failed: Invalid exchange
многократно.
Я задаюсь вопросом, там любой стандартный способ сбросить кэш к жесткому диску. Я думаю, что существует то, потому что usb-creator-gtk
он, umount
он.
Я использую Ubuntu x64 9.10
PS: я стараюсь избегать "синхронизации", потому что эта страница говорит, что это не безопасно. http://ubuntuforums.org/showthread.php?t=589975
Достаточно ли sync
?
Edit: относительно вашего редактирования - вы пытаетесь избежать синхронизации, потому что какой-то парень в Интернете разместил отказ от ответственности CYA в своем сообщении? Может быть, что-то не так с синхронизацией, о чем я не знаю, но это может стоить второго поста само по себе.
Тем не менее, со страниц информации о Linux:
sync записывает все данные, находящиеся в буфере в памяти, на диск. Это может включать (но не ограничивается) модифицированные суперблоки, модифицированные inodes, и отложенные чтения и записи. Это должно быть реализовано ядром; Программа синхронизации не делает ничего, кроме выполнения системного вызова sync.
Вам нужен вызов функции fsync (man раздел 2), но если вы делаете это в скрипте, вы, вероятно, захотите использовать команду sync (man раздел 8), который просто вызывает sync ().