sync и .bash_history
`sync' writes any data buffered in memory out to disk. This can
include (but is not limited to) modified superblocks, modified inodes,
and delayed reads and writes.
То бишь, все буферы с данными должны сбросится на диск.
Но все не так то просто: .bash_history, служащий понятно для чего по идее является самым обычным файлом и естественно буферируется как и все остальные. Так вот, не знаю, как остальные - не проверял, но при выполнении sync моя консолька, которая его создает, откровенно ложит на сброс буфера. Т. е. как была текущая история команд в оперативке (возможно свопе), так и осталась. Можно как нибудь с этим бороться?
З.Ы. Принципиального значения вопрос не имеет. Просто очень интересно!
З.Ы. З.Ы. В момент выполнения sync лампочка чтения/записи на системнике мигает, те хоть както, но он работает.
Конечно всем хоть немного знающим *nix известна команда sync. В инфе про нее написано:
`sync' writes any data buffered in memory out to disk. This can
include (but is not limited to) modified superblocks, modified inodes,
and delayed reads and writes.
То бишь, все буферы с данными должны сбросится на диск.
Но все не так то просто: .bash_history, служащий понятно для чего по идее является самым обычным файлом и естественно буферируется как и все остальные. Так вот, не знаю, как остальные - не проверял, но при выполнении sync моя консолька, которая его создает, откровенно ложит на сброс буфера. Т. е. как была текущая история команд в оперативке (возможно свопе), так и осталась. Можно как нибудь с этим бороться?
З.Ы. Принципиального значения вопрос не имеет. Просто очень интересно!
З.Ы. З.Ы. В момент выполнения sync лампочка чтения/записи на системнике мигает, те хоть както, но он работает.
Я не очень понял вопроса. sysn сбрасывает на диск буфера файлов - т.е. кэш (я думаю такая аналогия может быть). А причем здесь ОЗУ или СВОП ?
Я не очень понял вопроса. sysn сбрасывает на диск буфера файлов - т.е. кэш (я думаю такая аналогия может быть). А причем здесь ОЗУ или СВОП ?
sync сбрасывает на диск данные, кэшируемые в ОЗУ. man sync, info sync.
pacific_7
вас интересует, почему текущая история команд по выполнению sync не попадает в .bash_history? а потому, что .bash_history не меняется вообще, до завершения текущего сеанса работы с консолью. сделайте exit, а потом залогиньтесь снова :) и буфферизация тут не причем. временные файлы, где лежит history, сбросились на диск, я вас уверяю...
sync сбрасывает на диск данные, кэшируемые в ОЗУ. man sync, info sync.
pacific_7
вас интересует, почему текущая история команд по выполнению sync не попадает в .bash_history? а потому, что .bash_history не меняется вообще, до завершения текущего сеанса работы с консолью. сделайте exit, а потом залогиньтесь снова :) и буфферизация тут не причем. временные файлы, где лежит history, сбросились на диск, я вас уверяю...
Это понятно что кэширование идет в озу, но при сбросе кэша на диск, сами буфера в памяти не изменяются.
sysn сбрасывает на диск буфера файлов - т.е. кэш (я думаю такая аналогия может быть). А причем здесь ОЗУ или СВОП ?
а теперь:
Это понятно что кэширование идет в озу, но при сбросе кэша на диск, сами буфера в памяти не изменяются.
ладно раз уже понятно, то замечательно. теперь обьясните, что вы понимаете под "буферами в памяти".
sync сбрасывает на диск данные, кэшируемые в ОЗУ. man sync, info sync.
Про временные файлы я подозревал, и с login/logout штуку тоже сам заметил, только возмутило то, что непонятно, где консолька хранит эти временные файлы? Вдруг произошло отключение питания (UPS - для слабаков :)), а длинная история крайне необходимой мне последовательности команд не оказалась в hist - файле? И где их теперь искать? Очевидно, что на просторах /tmp... Кстати на консольку документация отсутсвует вообще - все концы в воду!
Наверно можно считать тему закрытой: опасения подтвердились - нарвался на недокументированные возможности Linux:).