Hành vi chương trình khi giết -HUP được nhận?


32

Có cách nào để tìm hiểu chương trình sẽ làm gì khi nhận được tín hiệu kill HUP không?
Không chỉ đơn giản là chạy lệnh ofc: D

Ví dụ,
killall -HUP pppdsẽ khởi động lại pppd
killall -HUP firefoxsẽ giết firefox

Câu trả lời:


47

Đọc tài liệu của nó. Đó là cách duy nhất. Như Keith đã viết , ý nghĩa ban đầu của SIGHUP là người dùng đã mất quyền truy cập vào chương trình và vì vậy các chương trình tương tác sẽ chết. Daemon - các chương trình không tương tác trực tiếp với người dùng - không cần hành vi này và thay vào đó thường tải lại các tệp cấu hình của họ khi họ nhận được SIGHUP. Nhưng đây chỉ là những quy ước.

Nếu bạn có nguồn, bạn cũng có thể đọc nó. Hoặc nếu bạn chỉ có nhị phân, bạn có thể thử tháo rời nó, tìm kiếm các sigactioncuộc gọi thiết lập trình xử lý tín hiệu SIGHUPvà cố gắng tìm hiểu xem các trình xử lý tín hiệu đó đang làm gì. Sẽ dễ dàng hơn khi sắp xếp không gửi SIGHUP đến chương trình đó ngay từ đầu.

Tại bất kỳ thời điểm nào, một quy trình nhất định đều thuộc một trong ba trạng thái liên quan đến một tín hiệu cụ thể: bỏ qua nó, thực hiện hành động mặc định hoặc chạy trình xử lý tùy chỉnh. Nhiều thông báo cho phép bạn xem mặt nạ tín hiệu của một quá trình ps, ví dụ như ps strên Linux. Điều đó có thể cho bạn biết nếu quy trình đang bỏ qua tín hiệu hoặc sẽ chết ngay lập tức trên SIGHUP, nhưng nếu quy trình đã đặt trình xử lý, bạn không thể biết trình xử lý đó làm gì.


1
SIGHUP quay trở lại thời của modem quay số. Nó báo hiệu Hang-UP của kết nối modem. Nó vẫn áp dụng cho các kết nối bị mất, nhưng ngày nay, nó hiếm khi bị treo khiến kết nối bị
ngắt. P

@bill Đúng, nhưng một phiên SSH cũng sẽ SIGHUP nó xử lý con nếu nó mất kết nối máy khách.
Keith

@Keith: Đó là lý do tại sao tôi chỉ ra rằng nó áp dụng cho các kết nối bị mất và hiếm khi gây ra bởi sự cố treo máy nữa. Tại thời điểm này sẽ khó hiểu khi đổi tên thành một cái gì đó liên quan đến việc ngắt kết nối, chẳng hạn như SIGDCN.
BillThor

18

Hành động mặc định là chấm dứt quá trình trên SIGHUP. Xem man 7 signalđể biết thêm chi tiết. Nhưng các chương trình có thể bẫy nó và làm bất cứ điều gì họ muốn. Vì các quy trình daemon không bao giờ được yêu cầu thoát, chúng thường sử dụng SIGHUP cho các mục đích khác, chẳng hạn như tự khởi động lại (như pppd hiện). Firefox giữ hành động mặc định.

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.