-HUP làm gì khi được sử dụng với killall?


16

Đôi khi, khi tôi đang chạy một killalllệnh từ Terminal, một đồng nghiệp sẽ đề xuất hoặc chỉnh sửa các tập lệnh của tôi để hiển thị killall -HUP.

Phần này -HUPlàm gì?


Đây là trang người đàn ông của Apple cho killall: developer.apple.com/l Library / mac / documentation / Darwin / Reference / khăn, nó trông giống như h = help, u = user và p = process. Nhưng đó là tất cả các trường hợp thấp hơn. Tôi không thấy các thông số chữ hoa trên trang man, nhưng chữ hoa có thể có ý nghĩa hoàn toàn khác nhau - hoặc chúng có thể không tồn tại ..
David DelMonte

Câu trả lời:


21

Các -HUPtùy chọn là tín hiệu được gửi đến các quá trình của các killalllệnh. Có thể hơi khó để nói, nhưng mục có liên quan trong killallhướng dẫn là:

-SIGNAL     Send a different signal instead of the default TERM.  The signal may be specified
            either as a name (with or without a leading SIG), or numerically.

Sự khác biệt giữa TERMtín hiệu mặc định killallgửi và HUPtín hiệu phụ thuộc phần lớn vào chương trình bạn đang gửi tín hiệu. Vào cuối chương trình, họ nhận được một giá trị tín hiệu ngắt khác nhau. Vì vậy, chương trình có thể bắt các ngắt và quyết định, dựa trên giá trị, nếu chúng nên làm cái này hay cái khác.

Các TERMtín hiệu (lịch sử, "chấm dứt tín hiệu") thường được gửi đến một chương trình để yêu cầu chấm dứt của nó (đó là một phiên bản politer của buộc chấm dứt của nó với các KILLtín hiệu). Chương trình là miễn phí để bắt và bỏ qua TERMtín hiệu. Nó không phải chấm dứt nếu nó không muốn và nó hoàn toàn có thể bỏ qua tín hiệu này.

Các HUPtín hiệu (lịch sử các "tín hiệu treo") thường được gửi đến một chương trình để yêu cầu mà nó khởi động lại và tái đọc tất cả các cấu hình của nó trong quá trình này. Hành vi thực tế của chương trình phụ thuộc vào việc thực hiện chương trình cụ thể. Không phải tất cả các chương trình bắt HUPvà chúng không bắt buộc theo quy ước hoặc giáo điều. Ví dụ, máy chủ web Apache sẽ bắt HUPtín hiệu và đọc lại tất cả các tệp cấu hình của nó nhưng nó sẽ không khởi động lại bất kỳ quy trình nào.

Nếu bạn muốn thực sự chấm dứt các quá trình và không lo lắng về việc liệu chúng có bắt và tuân theo tín hiệu hay không sử dụng KILLtín hiệu. Nó không thể bị bắt hoặc bỏ qua và dẫn đến kết thúc quá trình.

Để đánh giá tốt các tín hiệu POSIX có sẵn, hãy xem bài viết Wikipedia này .


2
Ở dưới cùng của trang man cho killall, trong phần XEM CSONG, là một liên kết đến trang giết người liệt kê một số tín hiệu và những gì họ làm.
Ian C.

Tôi là một trong những #FAILngười không bao giờ đọc qua các thiết bị chuyển mạch. Cảm ơn bạn!
Danijel-James W

Là một "tín hiệu gác máy", HUP thường được gửi đến một chương trình khi người dùng đăng xuất hoặc chấm dứt hệ vỏ khởi động chương trình. Nếu việc bắt tín hiệu không được chương trình thực hiện, chương trình thường sẽ chấm dứt. Như đã lưu ý ở trên, chương trình nhận tín hiệu có thể thực hiện bất kỳ hoạt động mong muốn nào do bắt được tín hiệu, như được chỉ ra bởi ví dụ Apache.
nachbar

2

Các -HUPlà tín hiệu "ngắt kết nối" có thể kích hoạt một ứng dụng để chấm dứt, đọc nó của tập tin cấu hình, và sau đó bắt đầu lại. Nó không nhất thiết phải tốt hơn so với việc sử dụng nó mà không có.

killall Finder

killall -HUP Finder

Được tôn trọng như nhau. Trong OS X Finder sẽ khởi chạy lại, nhưng nó sẽ đọc lại tệp cấu hình của nó. Điều này có thể không thực sự đúng nếu ứng dụng đang chạy không có -HUPchức năng được tích hợp trong đó. Như các poster trước đã đề cập đến Apache. Nó đọc các tập tin cấu hình của nó, nhưng nó không thể khởi chạy lại.

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.