Làm thế nào để đảm bảo sshd là dịch vụ cuối cùng bị dừng trong khi tắt máy?


8

Tôi đã nhận thấy rằng khi tôi phát rebootlệnh, kết nối SSH của tôi ngay lập tức bị đóng trên CentOS 7. Điều đó không có nghĩa là máy chủ đã khởi động lại, vì tôi vẫn có thể ping nó.

Có vẻ như systemd đang giết sshd quá sớm. Đôi khi, một dịch vụ sẽ bị kẹt khi tắt hoặc chỉ bị chậm và tôi không thể đăng nhập được nữa để xác minh những gì sai mặc dù máy chủ đã hoạt động.

Có cách nào để nói với systemd chỉ giết sshd sau khi tất cả các dịch vụ khác không hoạt động không?


8
Không phải là một câu trả lời cho câu hỏi của bạn, nhưng một lời nhắc nhở không có ích: tất cả các máy chủ sản xuất nên có KVM, thẻ truy cập từ xa hoặc truy cập cáp nối tiếp. (mặc dù tùy thuộc vào nơi tắt máy, ngay cả những thứ đó có thể là vô dụng)
Andrew B

4
Đây là điều không hề dễ dàng; systemd tích cực song song với khởi động và tắt máy. Không chỉ ssh bị giết ngay lập tức, nhiều dịch vụ khác, có thể bao gồm cả dịch vụ đang treo. Nhận trên bảng điều khiển (từ xa) và xem, hoặc kiểm tra nhật ký ở lần khởi động tiếp theo.
Michael Hampton

Có lẽ những người tốt tại unix.stackexchange.com sẽ có lời khuyên tốt hơn cho việc sửa đổi quy trình tắt hệ thống?
austinian 16/07/2015

Có vẻ như systemd sử dụng một số thứ tự dựa trên cấu hình khởi động để tắt máy: serverfault.com/questions/618612/ Nhưng nhưng tài liệu tham khảo rất mơ hồ và dài, tôi nghĩ rằng họ đang hướng bạn về DefaultDependencies - có vẻ như nó đang nói rằng nếu nó cần một cái gì đó để bắt đầu, khi tắt máy, một dịch vụ sẽ không bị tắt trước khi nó phụ thuộc vào.
Mary

Câu trả lời:


1

Ngay cả khi bạn có thể đảm bảo rằng SSH là dịch vụ cuối cùng bị tắt, điều đó sẽ là vô nghĩa, bởi vì bạn sẽ mất kết nối ngay khi dịch vụ mạng bị dừng.

Một máy Linux khởi động tất cả các dịch vụ theo thứ tự được xác định trước: đầu tiên là các dịch vụ quan trọng nhất, syslog, tường lửa, sau đó là mạng và cuối cùng là các ứng dụng yêu cầu truy cập mạng (web server, SSH máy chủ, v.v.). Khi tắt, các dịch vụ này được dừng theo thứ tự ngược lại. Vì vậy, bạn sẽ mất kết nối SSH gần như ngay lập tức.

Thực tế là SSH đã ngừng hoạt động trong khi bạn vẫn có thể ping máy từ xa là bình thường.


0

Đây là một chút hack, nhưng về việc thêm một cái gì đó như:

ExecStopPre=sleep 60

đến phần "[Dịch vụ]" của /usr/lib/systemd/system/sshd.service? Điều đó sẽ không đảm bảo cho việc tắt máy, nhưng nếu bạn có thể chịu đựng được thời gian tắt máy lâu hơn, nó có thể cho phép bạn giữ vỏ của mình hoạt động đủ lâu để xác minh rằng mọi thứ khác đã chấm dứt, hoặc thực hiện một số thao tác chọc nhanh. Không chắc điều này có hữu ích trong trường hợp chung hay không, vì có lẽ đã quá muộn để hủy bỏ việc tắt máy có vấn đề ở giai đoạn này, nhưng nó có thể hữu ích trong trường hợp bạn gặp vấn đề tái diễn trong khi tắt máy mà bạn đang cố gắng gỡ lỗi.


-5

Tôi không chắc chắn những gì bạn đang ở đây nhưng điều đầu tiên người ta sẽ nghĩ đến là làm mới quá trình.

Vì vậy, trong trường hợp của bạn, bạn có thể gia hạn tiến trình cha mẹ sshd:

       renice PRIO_MAX -p pid-of-sshd

Điều đó sẽ thay đổi mức độ ưu tiên của nó trong lập lịch CPU thành gần thời gian thực, nhưng không có gì khác.
Falcon Momot
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.