/bin/sync가 존재하는 이유가 궁금합니다. 나는 이것이 무엇을 하는지, 왜 페이징이 발생하는지, 왜 운영 체제 동기화가 중요한지 이해합니다. 그러나 /bin/sync를 호출하는 것이 언제 유용한지 여전히 알 수 없습니다.
제 생각에는 Linux는 중요한 일이 발생할 때마다 동기화해야 합니다(예: 종료 전, 원래 Linux의 동기화 부족으로 인해 동기화, 동기화, 신화가 발생함). Linux가 신뢰할 수 있고 우리 모두가 그렇게 믿고 있다면, 동기화 없이 OS에 해를 끼치는 명령을 실행하기 전에 Linux가 FS에 블록이 기록되도록 보장할 것이라고 가정해야 합니다.
sync(8) 매뉴얼 페이지에서는 프로그램이 잘못 종료될 경우 sync를 실행할 것을 권장합니다. 나는 이것을 어느 정도 보고 있고, 동기화를 사용해야 할 이유가 있는 프로그램은 거의 없다고 생각하지만(그리고 조언이 작동하는지 확인하기 위해 기다립니다), OS를 더 깔끔하게 만드는 방식으로 동기화를 끌 수 있는 방법은 없습니다. .
어쨌든, sync(8)은 /bin/sync 바이너리와 동일하지 않습니다. 바이너리가 유용한 상황을 놓치고 있는 것 같은데요? 내가 본 유일한 사용 사례는 더 많은 메모리를 확보하고 "사용 가능한" 메모리에 대한 더 나은 아이디어를 얻기 위해 호출하기 전에 mem을 실행하는 것입니다. 이것은 컴퓨터가 폭발할 것이라는 사실을 깨닫고 그 일이 일어나기 전에 sync에 들어갈 충분한 시간이 있었지만 sync(8) Watchdog 프로그램을 호출하려는 사람 외에는 누구도 수동으로 이 작업을 수행하지 않는 경우에 유용합니다.
제가 놓친 바이너리에 다른 장점이 있나요?
답변1
이것sync
유용간단한 패키지입니다sync
시스템 호출.
컴퓨터를 종료하기 전에 명시적으로 호출할 필요가 없습니다. 종료 스크립트가 이를 수행하기 때문입니다! 실제로 파일 시스템을 마운트 해제하거나 읽기 전용으로 전환하면 파일 시스템의 데이터가 디스크에 플러시되고 종료 스크립트가 이를 수행하므로 대부분의 경우 이는 필요하지 않습니다. 호출은 sync
문제가 발생하고 프로세스가 종료 순서에도 살아남아 제거를 방지하는 경우에 수행해야 하는 중요한 작업입니다.
sync
일시 중지 또는 최대 절전 모드 시퀀스의 두 번째 단계(즉, 하드웨어를 종료하기 전)에도 호출됩니다. 여기서는 "지금 모든 데이터를 디스크에 쓰기"라고 말하는 것 외에는 다른 옵션이 없습니다.
또 다른 유용한 시간 sync
은 실험적인 드라이버를 시험해 보는 등 충돌을 일으킬 위험이 있는 작업을 수행하기 전입니다.
sync
다음 시간 전에 호출됨프로그램충돌은 쓸모가 없습니다. sync
프로그램과 저장 매체 사이의 버퍼에 있는 데이터를 처리합니다. 프로그램에 의해 파일에 저장되지 않은 데이터에는 아무 작업도 수행하지 않습니다.
이 호출은 사용 가능한 메모리에 영향을 주지 않기 때문에 사용 가능한 메모리를 확인할 때도 sync
쓸모가 없습니다 . 재활용을 위해 쓰기 버퍼를 해제하지만 실제로 이러한 버퍼를 해제하지는 않습니다. 캐시로 남아 있는 동안 커널이 다른 것에 메모리를 할당해야 할 때 해제됩니다.
답변2
"동기화의 역사"는 Google에게는 어려운 일입니다. ;-) 완전히 알려지지 않은 추측은 커널 개발자가 테스트 목적으로 sync(2) 시스템 호출을 변경하는 것이 적어도 하나의 합법적인 사용이라는 것입니다. 파일 시스템을 중지하거나 마운트 해제하는 것보다 시스템 호출을 호출하는 더 편리한 방법이 필요합니까?
답변3
sync
어쩌면 대용량 데이터를 느린 드라이브에 복사할 때 유용할 수 있다는 것을 알고 계실 것입니다 . 외장 드라이브를 꺼내기 전에 외장 드라이브에 모든 내용이 기록되었는지 확인하세요!