Kenali helper VPN di Mac sebelum Anda membunuh prosesnya
Cocokkan proses VPN dengan berkas eksekutabel, pengendali, dan peran jaringannya sebelum menghentikannya, lalu gunakan jalur henti milik pemilik, bukan sinyal.
Perlakukan pesan tentang helper yang sudah berjalan sebagai petunjuk siklus hidup, bukan izin untuk mulai membunuh proses. Langkah berbahayanya bukan penghentian itu sendiri, melainkan identifikasi sebelumnya, karena beberapa komponen dengan nama serupa dapat ada di satu Mac dan hanya satu di antaranya yang memiliki koneksi. Bangun dulu catatan identitas. Lalu putuskan apakah penghentian memang tindakan yang tepat.
Bangun catatan identitas sebelum Anda bertindak
Empat fakta membuat proses dapat diidentifikasi: PID saat ini beserta waktu mulainya, berkas eksekutabel dan produk tempat ia bernaung, konteks pengguna atau hak istimewa yang menjalankannya, dan apa pun yang memulainya. ps -o pid,ppid,user,etime,command -p 1234 memberi Anda tiga yang pertama dalam satu baris, termasuk sudah berapa lama proses itu hidup. Activity Monitor menampilkan informasi yang sama dengan wajah yang lebih ramah. Tambahkan pengendali, yaitu aplikasi atau layanan yang bertanggung jawab memulai dan menghentikannya. Dengan keempatnya, proses berhenti menjadi nama dan menjadi objek yang dapat Anda pikirkan.
Jika salah satu dari keempatnya tidak diketahui, berhentilah di situ. Komponen yang tidak dikenal adalah pertanyaan bagi penerbit atau administrator, bukan eksperimen.
PID dalam log lama kini milik orang lain
ID proses didaur ulang, dan nomor yang disalin dari log kemarin bisa kini menunjuk ke sesuatu yang sama sekali tidak berkaitan. Bandingkan waktu mulai dengan stempel waktu log sebelum menarik kesimpulan apa pun. Hal yang sama berlaku untuk nama pendek: dua build dari satu produk dapat mengirim helper dengan nama identik dan tujuan berbeda. Identitas adalah tuple, tidak pernah nomornya saja.
Pisahkan perannya sebelum menyentuh hal lain. Klien dari satu koneksi, helper bersama yang melayani beberapa aplikasi, dan server yang menerima sesi orang lain semuanya tampak seperti proses latar belakang dalam daftar. Hanya satu di antaranya yang dapat dihentikan tanpa konsekuensi yang belum Anda pertimbangkan.
Hentikan lewat pemiliknya, bukan lewat sinyal
Mulailah dari kontrol yang memiliki hal itu: tombol Putuskan koneksi, perintah henti yang didukung layanan, atau tindakan agen manajemen itu sendiri. Jalur itu menjalankan pembongkaran yang diharapkan produk, termasuk menghapus rute dan menutup perangkat terowongan. Sinyal melewati semua itu dan meninggalkan status.
Perhatikan apa yang tersisa setelahnya. Proses yang tetap menetap mungkin sedang menunggu koneksi berikutnya, yang merupakan pilihan desain dan bukan penghentian yang gagal.
Mengapa supervisor menyalakan ulang apa yang Anda bunuh
Jika daemon peluncur atau kebijakan koneksi otomatis menghendaki terowongan tetap aktif, membunuh proses tidak menyatakan apa pun. Supervisor melihat keluarnya dan memulainya lagi, kadang sebelum Anda selesai membaca log.
Temukan supervisornya sebelum Anda melawannya. launchctl list menampilkan tugas yang dimuat beserta labelnya, dan tugas dengan pengaturan tetap hidup mulai ulang saat keluar menurut desain. Tindakan yang benar di situ adalah mengubah niat: bongkar tugasnya, nonaktifkan kebijakan koneksi otomatis, atau minta administrator melakukannya. Paksa keluar adalah alat lain dengan makna lain, dan itu termasuk prosedur pemulihan terdokumentasi untuk proses yang macet, bukan pengelolaan koneksi rutin.
Catat peristiwa siklus hidup, bukan pembunuhannya
Tuliskan identitas komponen, versi klien, peristiwa siklus hidup pertama yang relevan, dan apa yang Anda lakukan. Peristiwanya lebih penting daripada tindakannya, karena dua instans yang muncul saat login adalah masalah urutan startup yang akan terulang. Catatan yang menyebut berkas eksekutabel dan pengendalinya memungkinkan orang berikutnya mereproduksinya.
Lalu verifikasi keadaan yang dimaksud: layanan yang dibutuhkan pengguna, dan sumber daya privat yang dijangkau. Hindari pipeline yang grep sebuah substring dan memaksa membunuh setiap kecocokan, karena itu membuang semua hal di atas dan biasanya menghancurkan bukti mengapa ada dua instans. Jika proses terus kembali, temuannya adalah cacat konfigurasi atau urutan, dan perbaikannya milik siapa pun yang memiliki perilaku startup klien.