Máy chủ của tôi có tải cao và tôi đã dừng Apache2 cho đến khi tải được rút xuống bằng cách sử dụng killall -9 apache2. Khi bắt đầu Apache2, tôi đã gặp lỗi:
* # /etc/init.d/apache2 khởi động lại * Khởi động lại máy chủ web apache2 httpd (pid 4457?) Không chạy (98) Địa chỉ đã được sử dụng: make_sock: không thể liên kết với địa chỉ 0.0.0.0:80 không có ổ cắm nghe có sẵn, tắt Không thể mở nhật ký *
Tôi sau đó lsof | grep "* .www" và giết tiến trình bằng cổng 80.
Câu hỏi của tôi là làm thế nào một quá trình vẫn có thể sử dụng cổng 80 ngay cả sau khi tôi thực hiện lệnh kill all?
killall -9 …
có thể tạo ra vấn đề kill -9 (SIGKILL) là cách cực đoan nhất để dừng quá trình và là biện pháp cuối cùng, có những tín hiệu khác (SIGINT, SIGQUIT, v.v.) bạn có thể gửi để tạo cơ hội cho quá trình dọn dẹp và giải phóng bất kỳ tài nguyên nào nó đã bị khóa hoặc phân bổ. Thứ hai, có lẽ bạn chỉ cần dừng một quy trình đang lắng nghe trên cổng 80, để ngăn các yêu cầu tiếp theo được chấp nhận, bạn không cần phải giết tất cả các quy trình công nhân khác.
service httpd stop
(hoặc tương đương) giống như việc thu dọn ngôi nhà của bạn khỏi quỹ đạo để tắt đèn bàn.