Apabila pelancar enggan memulakan OpenVPN kerana fail PID sudah wujud, bacaan semula jadi ialah ada terowong berjalan di suatu tempat. Bacaan itu cukup kerap salah sehingga wajar diperiksa sebelum apa-apa dipadam. Fail dalam direktori masa jalan ialah perakaunan, dan perakaunan bertahan daripada ranap, but semula dan penutupan terputus yang tidak meninggalkan proses. Dua soalan menentukan kes ini: adakah proses masih hidup, dan adakah proses itu milik instans ini.

Mulakan dengan perkhidmatan, bukan fail

Penolakan biasanya datang daripada pelancar dan bukan daripada OpenVPN sendiri. Ia membaca laluan, menemui sesuatu di sana dan berhenti sebelum konfigurasi dihuraikan. Oleh itu soalan pertama ialah tentang kontrak pelancar, bukan tentang terowong.

Baca unit atau skrip yang mencetak mesej itu dan catat tiga perkara: laluan yang diperiksa, jenis perkhidmatan yang diisytiharkan, dan sama ada ia bertanggungjawab menulis fail itu. Unit moden boleh menggunakan penyeliaan mudah atau notify dan tidak pernah menyentuh fail PID, manakala skrip init lama boleh menciptanya sendiri. Menyalin pemeriksaan daripada satu model ke model lain menghasilkan penolakan seperti ini. Ketahui model mana yang digunakan sebelum mentafsir apa-apa.

Hanya selepas itu soalan menjadi sama ada sesuatu instans benar-benar berjalan.

Periksa sama ada pengecam itu milik instans anda

Nombor dalam fail membuktikan bahawa nombor telah ditulis. Ia tidak membuktikan proses dengan pengecam itu wujud sekarang, dan sudah tentu tidak membuktikan proses itu milik anda, kerana pengecam digunakan semula selepas but semula.

Bandingkan masa mula proses dengan cap masa fail, fail boleh laku dengan arahan unit, dan keahlian perkhidmatan dengan nama unit. Ketidakpadanan dalam mana-mana satu daripada tiga bermakna anda melihat perakaunan dan bukan terowong.

Pada hos yang menjalankan kontena atau beberapa ruang nama, pengecam mungkin bermakna dalam satu paparan dan tiada dalam yang lain. Tidak melihat proses juga bukan bukti bahawa ia tidak wujud, jika akaun anda tidak dapat memeriksanya. Periksa daripada konteks yang digunakan oleh pelancar sebelum membuat kesimpulan.

systemctl status [email protected]
ps -o pid,lstart,args -p "$(cat /run/openvpn/vpn.pid)"

Apa yang dijanjikan pelancar untuk dilakukan dengan fail itu

PIDFile= memberitahu pengurus perkhidmatan dari mana membaca pengecam proses utama. Pengurus tidak menulis fail itu, tetapi ia membuang yang masih tinggal selepas penutupan, dan itulah sebabnya keluar yang terputus boleh meninggalkan fail.

Pembahagian tanggungjawab itu menjelaskan dua gejala yang dilaporkan orang sebagai pepijat. Fail yang tidak pernah muncul bermakna daemon atau skripnya gagal menulisnya, bukan bahawa penyeliaan salah dikonfigurasikan. Fail yang kekal selepas berhenti bermakna laluan penutupan tidak pernah selesai.

Ini juga menjelaskan mengapa panduan semasa mencadangkan supaya mengelakkan konvensyen itu apabila penyeliaan boleh menjejaki proses utama secara langsung. Panduan itu bukan kebenaran untuk menukar jenis unit berpakej, kerana tingkah laku daemon di latar hadapan, semasa bercabang atau semasa memberitahu mesti sepadan dengan apa yang diisytiharkan unit. Tukar jenis tanpa menukar daemon dan anda mendapat unit yang melaporkan kegagalan semasa terowong berjalan, atau sebaliknya. Padankan pasangan itu, atau biarkan kedua-duanya. Rujukan perkhidmatan systemd menerangkan pembahagian pemilikan itu.

Penutupan bersih berbanding keluar terputus

Berhenti bersih meminta daemon keluar, menunggunya dan membiarkan pengurus mengemas perakaunannya sendiri. Keluar terputus, proses dibunuh atau but semula di tengah penutupan melangkau bahagian urutan itu, dan fail ialah apa yang tinggal. Menemuinya selepas ranap memberitahu anda penutupan tidak selesai, bukan bahawa ada sesuatu yang mendengar.

Bandingkan cap masa fail dengan but terakhir dan dengan berhenti terakhir unit.

Kemudian periksa bukti hidup secara langsung. Soket yang terikat pada port VPN dan antara muka terowong yang mempunyai alamat ialah bukti bahawa ada sesuatu yang berjalan, dengan cara yang fail teks dalam direktori masa jalan tidak pernah ada. Jika kedua-duanya tiada, tiada apa yang berjalan, apa pun yang didakwa fail itu.

Berhenti memadam fail sebagai kebiasaan

Memadamnya ialah langkah pemulihan yang sah setelah anda memastikan tiada instans memilikinya dan pelancar mendokumenkan tingkah laku ini.

Sebagai kebiasaan tetap sebelum bermula, ia menggagalkan pemeriksaan yang sedang anda elakkan. Jika fail lapuk kembali selepas setiap berhenti bersih, penulis dan kitaran hayat penutupan tidak bersetuju tentang siapa yang memiliki laluan itu, dan ketidaksetujuan itulah pepijat yang wajar diperbaiki.

Kekalkan jalan masuk yang bebas ke hos, mulakan satu instans melalui pengurus biasanya, dan baca hasil pertama. Orang seterusnya mendapat unit yang sama ada berfungsi atau menjelaskan dirinya sendiri.

Artikel berkaitan