Tại sao lại tắt máy -rên bây giờ, hành vi khác của hành vi khác với khởi động lại -Fv trên Debian Linux?


11

Gần đây tôi đã phải đối phó với một vấn đề treo máy khách / máy chủ NFS phiền phức, không liên tục. Khi sự cố xảy ra trên máy khách, tôi không thể ngắt kết nối, cùng với một số hành vi kỳ quặc khác. Giải pháp ngay lập tức duy nhất tôi phải hẹn hò là khởi động lại hộp máy khách.

Nhưng shutdown -r nowhoàn toàn không hoạt động. Tôi đã kể từ khi phát hiện ra reboot -f, mà không khởi động lại hệ thống. Tại sao? Tôi đã đọc các trang người đàn ông nhưng dường như không có gì để trả lời câu hỏi của tôi.

Tại sao lại shutdown -r nowcư xử khác hơn reboot -f?

(Tôi đang tiếp tục giải quyết vấn đề NFS, nhưng đó không phải là câu hỏi của tôi ở đây.)

Câu trả lời:


20

Từ trang người đàn ông tắt máy:

Khi TIME đã trôi qua, tắt máy sẽ gửi yêu cầu đến daemon init (8) để đưa hệ thống xuống runlevel thích hợp.

initbắt đầu và dừng công việc khi hệ thống thay đổi đường băng. Khi nhập runlevel 6 do khởi động lại, hệ thống sẽ chạy tất cả các tập lệnh trong /etc/rc6.d. Vì hệ thống của bạn không phản hồi shutdown, nên có khả năng tập lệnh trong /etc/rc6.d(có thể K05nfs-commondo sự cố NFS của bạn) bị kẹt, không cho phép trình tự tắt máy kết thúc. Trong thực tế, điều cuối cùng init chạy khi thay đổi thành runlevel 6 là reboot -d -f -i.

reboot -f bỏ qua tất cả các tập lệnh và khởi động lại hệ thống trực tiếp.


Cảm ơn bạn rất nhiều vì đã liên kết câu trả lời của bạn với bối cảnh của tôi.
Stu Thompson

12

shutdownhướng dẫn initbắt đầu quy trình tắt máy, bao gồm cho phép người dùng đăng nhập biết rằng hệ thống đang tắt, giết tất cả các quy trình một cách duyên dáng, ngắt kết nối và đồng bộ hóa ổ đĩa, v.v. Bạn đang bị treo ở đây vì các quá trình bị kẹt chờ đợi IO có xu hướng rất khó bị tiêu diệt và ngàm NFS bị mắc kẹt của bạn không thể bị vượt qua.

reboot -fmặt khác, ngay lập tức khởi động lại máy chủ mà không thực hiện bất kỳ thao tác nào. ( rebootlà chương trình initgọi để tắt máy chủ. Không có -fcờ, nó sẽ kiểm tra xem có initnghĩ rằng nó hiện đang khởi động lại không, và nếu không, nó sẽ gọi shutdownthay thế để bắt đầu quá trình).


Cảm ơn bạn rất nhiều vì đã liên kết câu trả lời của bạn với bối cảnh của tôi.
Stu Thompson

4

Bởi vì 'restart -f' không đi vào runlevel 0 - nó báo cho HĐH trực tiếp xác nhận lại CPU. Trang con người trên hộp Linux gần nhất của tôi nói:

 -f     Force halt or reboot, don't call shutdown(8)

Trang người đàn ông tắt máy giải thích thêm.


1

Nếu bạn sử dụng intrtùy chọn trên các mount NFS của mình, thì shutdown -r nowcó thể tiêu diệt các tiến trình đang chờ trên NFS IO để hoàn thành. Điều này có thể dẫn đến tham nhũng tập tin, nhưng có khả năng không nhiều hơn shutdown -ftạo.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.