Làm thế nào để systemd tồn tại một kill -9?


28

Giữa câu hỏi "Tại sao 'giết -9 0' gần đây kết thúc phiên giao diện điều khiển của tôi" và "Làm thế nào để có được sự hoảng loạn hạt nhân", tôi đã nhận được một cái bẫy dưới yên và thử kill -9 1trên một máy tính xách tay Arch linux cập nhật. Tôi đã làm nó như ID người dùng "root".

Tôi hoàn toàn mong đợi một số loại tai nạn hoặc hoảng loạn hoặc tắt máy, nhưng không có gì xảy ra. Tôi đã làm kill -9 1lại, không có hiệu lực.

Arch máy linux chạy systemdnhững ngày này, vì vậy: làm thế nào để systemdsống sót khi giết -9? Tôi hy vọng có mã trường hợp đặc biệt trong nhân Linux 3.7, nhưng có thể một số lý do khác tồn tại mà tôi chưa nghĩ đến.

Còn những thứ khác chạy với PID 1 thì sao? Slackware vẫn sử dụng inittôi tin, nhưng tôi sợ thử nó trên máy chủ Slackware sản xuất của tôi. DD-WRT trên bộ định tuyến không dây của tôi chạy / sbin / init.

Câu trả lời:


33

Từ man 2 kill:

Các tín hiệu duy nhất có thể được gửi để xử lý ID 1, quá trình init, là các tín hiệu mà init đã cài đặt rõ ràng các trình xử lý tín hiệu. Điều này được thực hiện để đảm bảo hệ thống không bị vô tình đưa xuống.

Đó là, có thể initlàm bất cứ điều gì nó thích khi nhận được SIGKILL(bao gồm cả thoát), nhưng init của systemd không cài đặt bất kỳ trình xử lý tín hiệu nào cho nó, vì vậy không có gì xảy ra.


4
Cảm ơn đã lưu ý rằng. Linux này có đặc hiệu không? Tôi dường như nhớ rằng đã đánh sập một máy trạm SunOS vào đầu những năm 90 bằng cách giết init do nhầm lẫn. Hay không. Tuổi trẻ tôi đã liều lĩnh hơn rất nhiều.
Bruce Ediger

1
@BruceEdiger, tôi dường như cũng nhớ rằng có thể kill -9 initvà gây ra sự hoảng loạn hạt nhân. Âm thanh như nó đã thay đổi tại một số điểm.
psusi

2
@BruceEdiger - Tôi đã thử nó cho máy chủ AIX và máy chủ HP-UX. Cả hai đều trả về một thông báo lỗi: kill: 1: 0403-068 Tín hiệu không hợp lệ cho quá trình này HOẶC kill: 1: Quá trình được chỉ định không tồn tại. Trang người đàn ông đặc biệt đề cập rằng điều này sẽ trả về một lỗi. Tôi được một số người nói rằng điều này có thể được thực hiện trước đây - nhưng không ai thành công trong hơn 10 năm qua.
DarkHeart

2
@BruceEdiger Có vẻ như từ một số tìm kiếm rằng đây là một sự phát triển gần đây (ít nhất là về mặt tuổi thọ của Unix). Thật không may, tôi đã không còn sống vào đầu những năm 90, vì vậy khi nó xảy ra nằm ngoài phạm vi hiểu biết của tôi. Tuy nhiên, sẽ rất thú vị khi tìm hiểu vì dường như hầu hết các Unice hiện đại đã thay đổi thành mặc định cho hành vi này.
Chris Down
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.