Xác định trình trợ giúp VPN trên Mac trước khi dừng tiến trình
Đối chiếu một tiến trình VPN với tệp thực thi, bộ điều khiển và vai trò mạng của nó trước khi dừng, rồi dùng đường dừng của chủ sở hữu thay vì gửi tín hiệu.
Hãy coi thông báo về một trình trợ giúp đang chạy là manh mối về vòng đời, không phải sự cho phép bắt đầu giết tiến trình. Bước nguy hiểm không phải bản thân việc dừng mà là việc nhận diện trước đó, vì trên một chiếc Mac có thể tồn tại nhiều thành phần tên giống nhau và chỉ một trong số chúng sở hữu kết nối. Trước tiên hãy lập bản ghi nhận diện. Sau đó quyết định xem việc dừng có phải là hành động đúng hay không.
Lập bản ghi nhận diện trước khi hành động
Bốn dữ kiện làm một tiến trình có thể nhận diện được: PID hiện tại kèm thời điểm khởi động, tệp thực thi và sản phẩm mà nó thuộc về, người dùng hoặc ngữ cảnh đặc quyền mà nó chạy dưới, và thứ đã khởi động nó. ps -o pid,ppid,user,etime,command -p 1234 cho bạn ba dữ kiện đầu trên một dòng, kể cả việc tiến trình đã sống bao lâu. Trình theo dõi hoạt động hiển thị cùng thông tin theo cách thân thiện hơn. Hãy thêm bộ điều khiển, tức là ứng dụng hoặc dịch vụ chịu trách nhiệm khởi động và dừng nó. Với bốn điều đó, một tiến trình không còn là cái tên mà trở thành một đối tượng có thể lập luận.
Nếu một trong bốn điều chưa rõ, hãy dừng lại ở đó. Một thành phần lạ là câu hỏi dành cho nhà phát hành hoặc quản trị viên, không phải một thử nghiệm.
PID trong nhật ký cũ giờ thuộc về người khác
ID tiến trình được tái sử dụng, và một con số sao chép từ nhật ký hôm qua giờ có thể trỏ tới một thứ hoàn toàn không liên quan. Hãy so sánh thời điểm khởi động với dấu thời gian trong nhật ký trước khi kết luận bất cứ điều gì. Điều tương tự cũng đúng với một cái tên ngắn: hai bản dựng của cùng một sản phẩm có thể cung cấp những trình trợ giúp cùng tên nhưng khác mục đích. Nhận diện là bộ tuple, không bao giờ chỉ là con số.
Hãy tách các vai trò trước khi chạm vào bất cứ thứ gì khác. Ứng dụng khách của một kết nối, một trình trợ giúp dùng chung phục vụ nhiều ứng dụng, và một máy chủ nhận phiên của người khác đều trông như một tiến trình nền trong danh sách. Chỉ một trong số chúng có thể bị dừng mà không để lại hậu quả bạn chưa tính tới.
Dừng qua chủ sở hữu, không qua tín hiệu
Hãy bắt đầu với bộ điều khiển sở hữu thứ đó: nút Ngắt kết nối của kết nối, lệnh dừng được dịch vụ hỗ trợ, hoặc hành động của chính tác nhân quản lý. Những đường đó thực hiện việc tháo gỡ mà sản phẩm mong đợi, bao gồm xóa tuyến đường và đóng thiết bị đường hầm. Một tín hiệu bỏ qua tất cả những điều đó và để lại trạng thái.
Hãy xem những gì còn lại sau đó. Một tiến trình vẫn thường trú có thể đang chờ kết nối tiếp theo, đó là lựa chọn thiết kế chứ không phải một lần dừng thất bại.
Vì sao trình giám sát khởi động lại thứ bạn đã giết
Nếu một daemon khởi động hoặc chính sách tự động kết nối muốn đường hầm hoạt động, việc giết tiến trình không diễn đạt điều gì. Trình giám sát thấy việc thoát và khởi động lại nó, đôi khi trước khi bạn đọc xong nhật ký.
Hãy tìm trình giám sát trước khi đối đầu với nó. launchctl list hiển thị các tác vụ đã nạp và nhãn của chúng, và một tác vụ có thiết lập keep-alive sẽ khởi động lại khi thoát, đúng như thiết kế. Hành động đúng ở đó là thay đổi ý định: gỡ tác vụ, tắt chính sách tự động kết nối, hoặc đề nghị quản trị viên làm việc đó. Buộc thoát là một công cụ khác với ý nghĩa khác, và nó thuộc về quy trình khôi phục có tài liệu cho một tiến trình bị kẹt, không phải việc quản lý kết nối thường ngày.
Ghi lại sự kiện vòng đời, không phải việc giết
Hãy ghi lại nhận diện thành phần, phiên bản ứng dụng khách, sự kiện vòng đời liên quan đầu tiên và những gì bạn đã làm. Sự kiện quan trọng hơn hành động, vì hai thực thể xuất hiện khi đăng nhập là một vấn đề thứ tự khởi động sẽ lặp lại. Một bản ghi nêu tên tệp thực thi và bộ điều khiển của nó cho phép người tiếp theo tái hiện điều đó.
Sau đó xác minh trạng thái mong muốn: dịch vụ mà người dùng cần và tài nguyên riêng tư mà nó tiếp cận. Hãy tránh đường ống tìm một chuỗi con rồi buộc giết mọi kết quả khớp, vì nó vứt bỏ mọi điều ở trên và thường phá hủy bằng chứng về lý do tồn tại hai thực thể. Nếu tiến trình cứ quay lại, phát hiện là một khiếm khuyết cấu hình hoặc thứ tự, và việc sửa thuộc về người sở hữu hành vi khởi động của ứng dụng khách.