0 10 * * 3 یا * 10 * * 3؟ فیلد دقیقه را بخوانید
0 10 * * 3 یک بار اجرا میشود؛ * 10 * * 3 در یک ساعت شصت بار اجرا میشود. فیلد دقیقه را بخوانید، ترتیب فیلدها را بررسی کنید و سپس منتظر آمادگی باشید، نه ساعت.
هر دو عبارت شبیه صبح چهارشنبه به نظر میرسند، و تنها یکی از آنها معنای یکبار را دارد. 0 10 * * 3 در ساعت 10:00 روز چهارشنبه اجرا میشود؛ * 10 * * 3 در هر دقیقه از ساعت دهم اجرا میشود، شصت فرصت برای راهاندازی همان تونل. اگر فرمان یک راهانداز باشد که وجود نشست فعلی را بررسی نمیکند، نسخه دوم خطای زمانبندی نیست، حلقهای است که مالکان رقیب تولید میکند. پیش از هر چیز دیگری فیلد دقیقه را بخوانید.
پنج فیلد عبارتاند از دقیقه، ساعت، روز ماه، ماه و روز هفته، به همین ترتیب، و ستاره در فیلد اول یعنی هر دقیقه.
فیلد دقیقه تعیین میکند چند بار
عدد ابتدایی همان دقیقه است، پس 0 10 * * 3 نخستین دقیقه ساعت دهم روز چهارشنبه است. جایگزین کردن آن با ستاره ساعت و روز را نگه میدارد و ویژگی یکبار بودن را حذف میکند، که شصت تطابق تولید میکند. cron تکراریها را حذف نمیکند: هر تطابق فرمان را دوباره اجرا میکند. این نکته ظریف درباره cron نیست، معناشناسی فیلدهاست، و خواندن مرجع زمانبند نصبشده ارزش دارد، چون ترتیب فیلدها و ستون اختیاری نام کاربری در crontab کاربر و سیستم متفاوت است.
با فرمانی بیخطر آزمایش کنید که مهر زمانی خودش را برای یک روز ثبت کند. یک خط در گزارش یعنی زمانبندی؛ شصت خط در یک ساعت یعنی درس.
راهاندازی دوم با اولی چه میکند
یک راهانداز خوشرفتار متوجه میشود اتصال از قبل برقرار است و کاری نمیکند. فراخوانی خام openvpn اینگونه نیست: فرایند دیگری میسازد، تلاش دیگری برای اتصال به یک دستگاه یا یک درگاه، و مجموعه دیگری از مسیرها که برای همان مقصدها رقابت میکنند. در NetworkManager، درخواستهای فعالسازی مکرر برای یک اتصال معمولاً idempotent هستند، و دقیقاً به همین دلیل مشکل پنهان میماند تا وقتی کسی از فرمان دیگری استفاده کند. زمانبندی باید از مالکی بپرسد که از قبل تونل را مدیریت میکند.
سپس مشخص کنید درخواست در میانه اتصال چه معنایی دارد. نه فعالسازی تکراری و نه صفی از راهاندازیهای در انتظار بهوضوح درست نیستند؛ یکی را انتخاب کنید و بگذارید راهانداز آن را پیاده کند، بهجای آنکه زمانبند بهطور تصادفی تصمیم بگیرد.
پیش از فرمان فیلدها را بشمارید
crontab کاربر و سیستم در این تفاوت دارند که آیا ستون نام کاربری پیش از فرمان ظاهر میشود. ورودیای که میان آن دو کپی شود یا با حساب اشتباه اجرا میشود یا نام کاربری را بهعنوان نخستین واژه فرمان منتقل میکند. بهجای راهنما، مرجع نصبشده را بررسی کنید و فیلدهای خط خودتان را بشمارید. ورودی پنجفیلدی با واژه ششم پیش از فرمان، crontab سیستم است؛ همان خط در crontab کاربر تلاش میکند آن واژه را بهعنوان برنامه اجرا کند.
هویت اجرا محیط را با خود میبرد. یک کار cron کلیدآویز باز، پرسش تعاملی رمز عبور یا پوشه کاریای را که در آن آزمایش کردهاید به ارث نمیبرد.
منتظر آمادگی باشید، نه ساعت
راهاندازی موفق به معنای تونل کارآمد نیست. ممکن است کلاینت هنگام پایان کار هنوز در حال حل نقطه پایانی، احراز هویت یا نصب مسیرها باشد. هر کار وابسته باید منتظر منبع محافظتشدهای باشد که واقعاً به آن نیاز دارد، با مهلت محدود و شکست ثبتشده، نه تعداد ثابتی ثانیه. همین تفاوت زمانبندیای که بیشتر وقتها کار میکند را از یکی جدا میکند که در صبح شلوغ بیصدا شکست میخورد.
اگر در آن ساعت MFA تعاملی لازم است، کار میتواند توجه یک انسان را بخواهد اما نمیتواند پاسخ را فراهم کند. این حالت را صریح نگه دارید، بهجای گنجاندن رمز عبور قابل استفاده مجدد یا تلاش بیپایان.
برای فعالسازی واقعاً یکباره، از سازوکار یکباره پشتیبانیشده استفاده کنید. قاعده تکرارشوندهای که باید به خاطر سپرده و حذف شود، راهاندازی تکراری آینده است.