Tôi vẫn thấy mọi người khuyên nên sử dụng sync; sync; sync; sleep 30; halt
câu thần chú khi nói về việc tắt hoặc khởi động lại Linux.
Tôi đã chạy Linux kể từ khi thành lập và mặc dù đây là quy trình được đề xuất trong BSD 4.2 / 4.3 và SunOS 4 ngày, tôi không thể nhớ rằng tôi đã phải làm điều đó trong ít nhất mười năm qua, trong đó tôi có lẽ trải qua quá trình tắt / khởi động lại Linux có thể hàng ngàn lần.
Tôi nghi ngờ rằng đây là lỗi thời vì hạt nhân không thể ngắt kết nối và đồng bộ hóa hệ thống tập tin gốc và các hệ thống tập tin quan trọng khác được yêu cầu ngay cả trong chế độ người dùng đơn (ví dụ / tmp), và do đó cần phải nói rõ ràng để xóa nó càng nhiều dữ liệu càng tốt vào đĩa.
Ngày nay, chưa tìm thấy mã có liên quan trong nguồn kernel (đào qua http://lxr.linux.no và google), tôi nghi ngờ rằng kernel đủ thông minh để xóa sạch ngay cả hệ thống tập tin gốc và hệ thống tập tin đủ thông minh để thực hiện đồng bộ hóa (2) một cách hiệu quả trước khi tự ngắt kết nối trong thời gian bình thường shutdown
/ reboot
/ poweorff
.
Điều "sync; sync; sync"
này chỉ cần thiết trong các trường hợp cực đoan khi hệ thống tập tin sẽ không ngắt kết nối sạch (ví dụ như lỗi đĩa vật lý) hoặc hệ thống ở trạng thái chỉ buộc khởi động lại trực tiếp (8) sẽ khiến nó bị đóng băng (ví dụ như quá tải cao để cho nó lên lịch lệnh tắt máy).
Tôi cũng không bao giờ làm sync
thủ tục trước khi ngắt kết nối thiết bị di động và không bao giờ gặp sự cố.
Một ví dụ khác - Xen cho phép DomU được gửi shutdown
lệnh từ Dom0, đây được coi là "tắt máy sạch" mà không cần ai phải đăng nhập và gõ phép thuật sync; sync; sync
trước.
Tôi đúng hay tôi may mắn vì vài ngàn lần tắt hệ thống?