Quando a / bin / sync é útil em linux moderno?

5

Estou curioso porque existe / bin / sync. Eu entendo o que acontece, porque a paginação acontece e porque é importante que um sistema operacional seja sincronizado. No entanto, ainda não consigo ver quando chamar / bin / sync é útil.

Parece-me que o Linux já deve sincronizar sempre que algo importante acontecer (como antes de um desligamento, cuja falta no proto-Linux leva à sincronização; sync; sync; mito). Se o Linux for confiável, e todos nós acreditarmos que é, então devo assumir que ele garantirá que os blocos sejam gravados no FS antes de executar um comando que prejudicaria o SO sem uma sincronização.

A página do manual sync (8) sugere que a sincronização seja executada quando um programa for encerrado de maneira inadequada. Eu meio que vejo isso, embora eu ache que apenas um número muito pequeno de programas teria motivos para usar a sincronização (e esperar para ter certeza de que a sugestão funcionou), mas não seria capaz de fechar um método mais limpo que permita ao SO sincronizar para eles.

Em qualquer caso, sync (8) não é o mesmo que o binário / bin / sync. Eu acho que devo estar perdendo uma situação em que o binário é útil? O único caso de uso que vi foi executá-lo imediatamente antes de fazer uma chamada para mem para liberar mais memória e, talvez, dar uma ideia um pouco melhor de sua memória 'disponível'. Seria útil se você de alguma forma percebesse que seu computador iria explodir e tivesse tempo suficiente para digitar a sincronização antes que isso acontecesse, talvez, mas ninguém está fazendo isso manualmente, em vez de algum programa watchdog chamando sync (8).

Existem outras vantagens para o binário que estão faltando?

    
por dsollen 31.12.2015 / 20:30

3 respostas

0

"história de sincronização" é uma coisa difícil de usar no google ;-) Um palpite totalmente desinformado é que pelo menos um uso legítimo é para desenvolvedores de kernel fazendo mudanças na chamada do sistema sync (2) para teste. Eles precisam de uma maneira de chamar o syscall que é um pouco mais conveniente do que parar ou desmontar um sistema de arquivos?

    
por 01.01.2016 / 03:34
2

O sync utility é um invólucro trivial em torno do sync chamada do sistema .

Você não precisa chamá-lo explicitamente antes de desligar o computador ... porque os scripts de desligamento fazem isso por você! Na verdade, isso não é necessário na maioria dos casos, porque desmontar um sistema de arquivos ou alterá-lo para somente leitura libera os dados desse sistema de arquivos para o disco, e os scripts de desligamento fazem isso. Chamar sync é uma coisa de cintos e chaves, no caso de algo dar errado e um processo sobreviver à sequência de desligamento e impedir a desmontagem.

sync também é chamado no próximo ao último estágio de uma sequência de suspensão ou hibernação, antes de desligar o hardware. Aqui não há alternativa, algo tem a dizer "gravar todos os dados no disco agora".

Outra hora em que sync é útil é antes de fazer algo com risco de causar uma falha, por exemplo, experimentando um driver experimental.

Chamar sync antes de um programa falhar é inútil. sync manipula dados em buffers entre os programas e a mídia de armazenamento; ele não faz nada com dados que um programa não salvou em um arquivo.

Chamar sync também é inútil ao examinar a memória disponível, já que ela não afeta a memória disponível. Embora ele libere buffers para recuperação, ele não libera esses buffers - eles serão liberados quando o kernel precisar alocar memória para outra coisa, enquanto eles permanecem como cache.

    
por 01.01.2016 / 02:07
0

Talvez você saiba que sync é útil ao lidar com alguns dados grandes em uma unidade lenta. Apenas para garantir que tudo esteja gravado na unidade externa antes de retirá-lo!

    
por 01.01.2016 / 04:11

Tags