گیر کردن در هنگام خاموش شدن وقتی پروکسی در حال اجراست به‌ندرت باگ VPN است، حتی وقتی VPN آخرین چیزی است که روی صفحه دیده می‌شود. برنامه‌های پشت پروکسی هنوز منتظر مسیری هستند که همین حالا ناپدید می‌شود، و از واحدی که مالک تونل است هنوز خواسته نشده آن را ببندد. چیزی که مانند سرویس کند به نظر می‌رسد معمولاً مشکل ترتیب است. ترتیب بیشتر از این موارد را حل می‌کند تا هر تغییری در مهلت زمانی.

از بیرون به داخل و به ترتیب معکوس کار کنید: اول مصرف‌کننده‌ها، سپس پروکسی، سپس تونل، و هر کدام را مؤلفه‌ای متوقف می‌کند که آن را راه انداخته است.

پیش از متوقف کردن هر چیزی واحدها را فهرست کنید

واحد برنامه، واحد پروکسی و مالک VPN را که در یک اجرای عادی دخیل‌اند بنویسید. هر حل‌کننده یا کمکی را که برچیدن خودش را دارد اضافه کنید، چون همان‌ها هستند که مردم ساعت دو بامداد فراموش می‌کنند. بدون آن فهرست، اولین فرمان توقفی که تایپ می‌کنید یک قربانی را تصادفی انتخاب می‌کند.

نام‌ها شاهد ضعیفی هستند. پروکسی کاربر، پروکسی سیستم و تونل حساب دیگر می‌توانند نام یکسان داشته باشند در حالی که چرخه‌های زندگی‌شان کاملاً بی‌ارتباط است.

کار را تمام کنید، سپس مصرف‌کننده را متوقف کنید

توقف برنامه‌ریزی‌شده با برنامه آغاز می‌شود: بگذارید درخواست‌هایش را تمام کند یا لغو کند، سپس پروکسی را از طریق واحد سرویسش متوقف کنید. اگر برنامه باید پس از رفتن تونل به کار ادامه دهد، این را آگاهانه ترتیب دهید به‌جای آنکه آن را به مسیری بیاویزید که همین حالا از میان می‌رود.

درخواست‌هایی که هنگام توقف در راه بودند باید در سابقه ثبت شوند، چون طوفان تلاش مجدد در راه‌اندازی بعدی از همان‌جا می‌آید.

ExecStop و ExecStopPost دو ابزار متفاوت‌اند

ExecStop= عملیات توقف همگام است؛ ExecStopPost= پاک‌سازی‌ای است که حتی پس از راه‌اندازی ناکام هم اجرا می‌شود. فرمان توقفی که فقط سیگنالی به یک فرایند می‌فرستد و برمی‌گردد، به systemd اجازه می‌دهد پیش برود در حالی که مصرف‌کننده هنوز داده‌ها را تخلیه می‌کند. هر چیزی که در هر حال باید رخ دهد جای‌اش در گونه پسین است، و هر چیزی که باید توقف را مسدود کند جای‌اش در گونه همگام. واحد مؤثر و افزونه‌هایش را بررسی کنید به‌جای آنکه پرونده‌ای از بسته را در جای خود ویرایش کنید.

گراف وابستگی کارهای توقف را مرتب می‌کند. اسکریپت ناهمگام را همگام نمی‌کند، و برنامه‌ای دور را هم مجبور نمی‌کند داده‌هایش را ثبت کند.

توقف را کران‌دار کنید و بدانید این کران چه هزینه‌ای دارد

TimeoutStopSec= هم فرمان توقف و هم پایان یافتن خود سرویس را محدود می‌کند، و systemd هنگام انقضای مهلت به کشتن اجباری می‌رسد. مقدار را از رفتار واقعی تخلیه برنامه انتخاب کنید و بنویسید وقتی به آن رسید چه چیزی ممکن است از دست برود. عددی که انتخاب شده چون ماشین باید سریع‌تر خاموش شود، تنظیمی برای از دست رفتن داده در لباس مبدل است.

وقتی توقف هنوز کند است، واحد، فرایندهای فرزندش، فاصله گزارش و نتیجه مهلت را ثبت کنید. کوتاه کردن همه مهلت‌ها یا توسل به کشتار گسترده همان راهی است که خاموشی‌های پاک را در بوت بعدی به وضعیت خراب تبدیل می‌کند.

از طریق مالک قطع اتصال کنید، سپس سه حالت را بیازمایید

وقتی مصرف‌کننده‌ها پایین آمدند، از مدیر مالک تونل بخواهید قطع اتصال کند: نمونه systemd، اتصال فعال NetworkManager یا سرویس فروشنده. کشتن یک فرایند بی‌ربط OpenVPN لزوماً نشستی را که مسیر را تأمین کرده حذف نمی‌کند، و پروکسی‌ای با سیاست راه‌اندازی مجدد ممکن است هنگام برچیدن مسیر درخواستی را بازسازی کند. پیش از آغاز، آن سیاست را با توقف برنامه‌ریزی‌شده هماهنگ کنید.

توقف عادی، توقف با درخواست فعال و توقفی که در آن تونل اول شکست می‌خورد را بیازمایید. دنباله‌ای تکرارپذیر با مهلت از خاموشی سریعی که یک بار جواب می‌دهد بهتر است.

مقالات مرتبط