معنی us= در یک خط گزارش OpenVPN و نحوه تبدیل آن
فیلد us= بخش میکروثانیهای مهر زمان گزارش است، نه شناسه نشست. آن را تا شش رقم پر کنید و پیش از مقایسه ساعتها کل خط را بخوانید.
گزارش متنی OpenVPN تاریخ، ساعت و یک us= مقدار را در یک خط مینویسد و آخرین مورد از این سه، بخشی است که خوانندگان اشتباه میفهمند. این بخش، مؤلفه میکروثانیه همان مهر زمان است که بدون پر شدن با صفر چاپ میشود. شناسه نشست، نام کاربری یا شمارنده نیست و اگر آن را چنین بگیرید، کسری از ثانیه به یک نتیجهگیری مطمئن و نادرست تبدیل میشود. آن را بهعنوان کسری از ثانیه نمایشدادهشده تبدیل کنید و بقیه خط خوانا میماند.
سه بخش خط چه معنایی دارند
تاریخ و ثانیه کامل اول میآیند و us= باقیمانده زیر یک ثانیه را حمل میکند. مقدار 12345 دوازده هزار و سیصد و چهل و پنج میکروثانیه است، یعنی 0.012345 ثانیه، پس خط وقتی زمان چاپشده 09:15:30 است، 09:15:30.012345 را توصیف میکند. شمارنده با هر ثانیه جدید از نو شروع میشود، بنابراین خط بعدی میتواند کسر کوچکتری چاپ کند بدون آنکه هیچ ساعتی عقب برود. فقط مهر زمان کامل رویدادها را مرتب میکند.
2026-11-02 08:41:07 us=4820
واحد یک میلیونیم ثانیه است و شش رقم از us= کل بازه 0.000000 تا 0.999999 را پوشش میدهد. پنج رقم دهگان میلیثانیه را توصیف میکند، در حالی که شش رقم صدگان میلیثانیه تا نزدیک یک ثانیه کامل را توصیف میکند. اگر تبدیل کسری بزرگتر از یک بدهد، ممیز جابهجا شده و حساب اشتباه است. انجام دستی آن یعنی تقسیم عدد صحیح چاپشده بر یک میلیون و افزودن آن به ثانیه کامل.
پرشدن با صفر همان تله است. us=42 چهل و دو میکروثانیه است که بهصورت .000042 نوشته میشود، نه .42. پیش از تبدیل، عدد صحیح را از سمت چپ تا شش رقم پر کنید و مقدار دیگر شبیه کسر اعشاری ارقامی که میبینید به نظر نمیرسد.
تبدیل یک خط بدون ماشینحساب
ثانیه چاپشده را مبنا بگیرید و us= را کسر در نظر بگیرید. برای 09:15:30 با us=12345 شکل اعشاری 09:15:30.012345 است؛ برای us=900000 برابر 09:15:30.900000 است. ارقام پس از ممیز همان عدد صحیح پرشدهاند، هرگز عدد صحیح تقسیمشده بر هزار نیستند. نوشتن شکل ششرقمی در ابتدا بیشتر اشتباهات را مانع میشود.
اگر گزارشها را به مهر زمان تجزیه میکنید، تاریخ، ثانیه کامل و کسر را با هم تجزیه کنید. تجزیهکنندهای که میلیثانیه را فرض میکند رویدادها را با ضریب هزار اشتباه مرتب میکند و خروجی هنوز باورپذیر به نظر میرسد.
وقتی این فیلد در گزارش نیست
بخش میکروثانیه به قالب گزارش متنی تعلق دارد و فقط زمانی ظاهر میشود که مهرهای زمان تفصیلی فعال باشند. در قالببند مهر زمان OpenVPN 2.6 وقتی آن خروجی روشن است و مقدار ذخیرهشده صفر نیست، افزوده میشود. بنابراین گزارش بدون us= هیچ چیزی درباره ساعت یا ساخت نمیگوید؛ معمولاً یعنی سطح تفصیل پیکربندیشده خیلی پایین است. پیش از سرزنش همگامسازی زمان، پیکربندی را بررسی کنید.
تأیید این تنظیم از پیکربندی سرور آسان است. دستور زیر را اجرا کنید و عددی را که برمیگرداند بخوانید. خروجی مهر زمان تفصیلی در سطح تفصیل 4 ظاهر میشود، پس مقدار کمتر، فیلد غایب را بدون هیچ ایراد دیگری توضیح میدهد. اجرای همان پیکربندی با --verb 4 فیلد را نشان میدهد، بهمحض اینکه دیمن با آن سطح دوباره راهاندازی شود.
grep -nE '^[[:space:]]*verb[[:space:]]+[0-9]' /etc/openvpn/server.conf
بالا بردن سطح تفصیل جزئیات را به گزارش اضافه میکند؛ ساعت را بهتر نمیکند. پس از راهاندازی مجدد، یک خط جدید را با یک خط قدیمی مقایسه کنید تا مطمئن شوید قالب عوض شده است، و وقتی پاسخ سؤال روشن شد سطح را دوباره پایین بیاورید.
چیزی که شش رقم اثبات نمیکند
شش رقم تفکیکپذیری را توصیف میکند و تفکیکپذیری هیچ چیزی درباره همنظر بودن دو میزبان بر سر زمان نمیگوید. کلاینت و سرور میتوانند هر دو میکروثانیه چاپ کنند در حالی که ساعتهایشان چند ثانیه اختلاف دارند. وقتی رویدادها را بین ماشینها همبسته میکنید، منطقه زمانی و هر افست شناختهشده را ثبت کنید و فیلدی را که همتا یا نشست را نام میبرد بر هر مهر زمانی ترجیح دهید. دو خطی که یک کسر مشترک دارند لزوماً یک اتصال نیستند.
یک جمعآورنده ممکن است هر خط را هنگام رسیدن مهر بزند، که مهر زمان دومی اضافه میکند متعلق به جمعآورنده و نه OpenVPN. پیش از مقایسه مشخص کنید کدام را میخوانید و خط خام را نگه دارید تا مقایسه دوباره انجامشدنی باشد.
مقدار تازه us= اثبات نمیکند که کلاینت جدیدی وارد شده است، و یک مقدار تکراری اثبات نمیکند که رویداد تکراری بوده است. فیلدهای همتا و اتصال به این پرسشها پاسخ میدهند.