Vaqt zonasi va locale sozlamalari
Server jismonan qayerda turishidan qat’i nazar, uning tizim soati hamda matn va sana formati to'g'ri sozlangan bo'lishi kerak: noto'g'ri vaqt zonasi log tahlilini chalkashtiradi, noto'g'ri locale esa buyruqlar chiqishida sana, son yoki valyutaning kutilmagan formatda ko'rinishiga sabab bo'ladi. systemd ikkalasini ham bitta vositalar oilasi — timedatectl va localectl orqali boshqaradi.
Bu maqola init va systemd maqolasida tanishtirilgan systemd vositalar oilasini davom ettiradi.
Nimalarni o'rganasiz
Bu maqola oxirida siz quyidagilarni qila olasiz:
- joriy vaqt zonasi va soat holatini
timedatectlbilan tekshirish va o'zgartirish; - nega production serverlar odatda
UTCda qolishini tushuntirish; - tizim locale’ini
localectlbilan ko'rish va o'zgartirish; LANG,LC_*o'zgaruvchilari va tizim locale sozlamasi o'rtasidagi farqni tushuntirish;- noto'g'ri vaqt zonasi yoki locale keltirib chiqaradigan odatiy muammolarni tanib olish.
timedatectl: vaqt va vaqt zonasi
Joriy holatni ko'rish:
Local time: Fri 2026-07-24 10:00:00 UTC
Universal time: Fri 2026-07-24 10:00:00 UTC
RTC time: Fri 2026-07-24 10:00:00
Time zone: Etc/UTC (UTC, +0000)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no
Asosiy maydonlar:
- Time zone — hozir sozlangan vaqt zonasi;
- System clock synchronized — tizim soati NTP vaqt serveriga mos keladimi;
- NTP service — vaqtni sinxronlash xizmati faolmi.
Mavjud vaqt zonalarini ko'rish
Vaqt zonasini o'zgartirish
Info
Production serverlar odatda vaqt zonasini haqiqiy geografik zonaga emas, UTC ga o'rnatilgan holda saqlaydi. Sababi: bir nechta serverdan yig'ilgan log'larni solishtirganda, cron jadvallari bilan ishlaganda yoki vaqtga asoslangan har qanday hisob-kitobda har bir mashinaning bitta qat’iy nuqtaga (UTC) bog'langani tahlilni ancha soddalashtiradi. Vaqt zonasiga xos ko'rinish odatda tizim darajasida emas, ilova yoki taqdimot qatlamida hal qilinadi.
NTP sinxronlashni boshqarish
set-ntp true/false tarmoqdagi vaqt serveri bilan avtomatik sinxronlashni yoqadi yoki o'chiradi. O'chirilganda soat faqat uskuna soatiga (RTC) tayanadi va asta-sekin haqiqiy vaqtdan uzoqlashib ketishi mumkin.
Warning
System clock synchronized: no ga e’tibor berishga arziydi: TLS sertifikatlarini tekshirish, cron rejalashtirish, log'lar tartibi va ko'p taqsimlangan tizimlar (masalan, Kerberos autentifikatsiyasi) noto'g'ri vaqtga sezgir. Bu holatni ko'rsangiz, avval NTP xizmati (odatda systemd-timesyncd yoki chronyd) haqiqatan ishlayotganini tekshiring.
Soatni qo'lda o'rnatish va RTC vaqt zonasi
Vaqtni qo'lda o'rnatish faqat NTP o'chirilgan bo'lsa ma’noga ega — sinxronlash faol bo'lsa, systemd qo'lda kiritilgan qiymat vaqt serveri bilan "kurashmasligi" uchun o'zgarishni rad etadi:
Yechim — avval set-ntp false qilish, lekin serverda odatda yaxshiroq javob NTP’ni yoqiq qoldirib, uni chetlab o'tish o'rniga sinxronlashni tuzatish. Bunga bog'liq bitta maydon dual-boot mashinalarida chalkashlik tug'diradi: RTC in local TZ. Linux sukut bo'yicha uskuna soatini (RTC) UTC da, Windows esa lokal vaqtda saqlaydi, shuning uchun dual-boot mashinasi sudo timedatectl set-local-rtc 1 ishga tushirilmaguncha operatsion tizimlardan birida noto'g'ri vaqtni ko'rsatadi. Serverda esa RTC’ni doim UTC da qoldiring — set-local-rtc 1 hujjatlarda ishonchsiz va tavsiya etilmaydigan rejim sifatida ko'rsatilgan.
localectl: tizim locale sozlamalari
Joriy holatni ko'rish:
Locale — tizim tili, sana formati, son ajratgichlari va valyutani ko'rsatish qoidalarini belgilaydigan sozlamalar to'plami. LANG=en_US.UTF-8 ingliz tili, AQSh formatlash qoidalari va UTF-8 kodlashni bildiradi.
Mavjud locale’larni ko'rish
Agar kerakli locale ro'yxatda bo'lmasa, avval uni yaratish (generate) kerak:
Tizim locale’ini o'zgartirish
LANG/LC_* va joriy shell muhiti
localectl tizim bo'yicha sukut bo'yicha qiymatni o'rnatadi, lekin har qanday foydalanuvchi yoki shell sessiyasi uni o'z muhit o'zgaruvchisi bilan qayta belgilashi mumkin:
LANG— aniq o'rnatilmagan har qandayLC_*o'zgaruvchisiga qo'llanadigan sukut bo'yicha locale;LC_TIME,LC_NUMERIC,LC_MONETARYva boshqalar — muayyan toifa uchun alohida locale;LC_ALL— barchaLC_*sozlamalarini vaqtincha qayta belgilaydi va ularning hammasidan ustun turadi.
Bu ikki buyruq bitta vaqt lahzasini ko'rsatadi, lekin — mos locale o'rnatilgan bo'lsa — boshqa formatda.
Info
Sana yoki son formatini oldindan aytib bo'ladigan tarzda tahlil qilishi kerak bo'lgan skript yozayotganda uni LC_ALL=C yoki LC_ALL=C.UTF-8 bilan ishga tushirish tavsiya etiladi — bu buyruq chiqishini foydalanuvchi yoki muhitning locale sozlamasidan qat’i nazar barqaror, oldindan ma’lum formatda saqlaydi.
Keng tarqalgan xatolar
Har bir serverni turli vaqt zonasida qoldirish
Ko'p serverli muhitda har bir mashina o'zining geografik vaqt zonasida ishlasa, log'larni birlashtirish va hodisalar ketma-ketligini tiklash ancha qiyinlashadi. Barcha serverlarni UTC da saqlash bu muammoni oldindan yo'q qiladi.
NTP’ni tekshirmasdan "vaqt noto'g'ri" degan xulosaga kelish
Ko'p hollarda muammo vaqt zonasida emas, NTP sinxronlash o'chirilgani yoki buzilganida bo'ladi. Avval timedatectl dagi System clock synchronized qiymatini tekshiring.
Hech qachon yaratilmagan locale’dan foydalanishga urinish
Locale mavjud bo'lmasa, localectl set-locale aniq xato bermasligi mumkin; buyruqlar chiqishida kutilmaganda C yoki POSIX formatiga qaytib qolish haqiqiy belgi bo'lishi mumkin. Avval locale -a bilan tekshiring va kerak bo'lsa locale-gen bilan yarating.
Mashqlar
timedatectlchiqishidagi har bir maydonni o'qing va har birini o'z so'zlaringiz bilan tushuntiring.- Sinov VM’ida vaqt zonasini
Asia/Tashkentga o'zgartiring, so'ngdatevatimedatectlchiqishlarini solishtiring. LC_ALL=C dateva oddiydatechiqishlarini solishtiring — farqni tushuntiring.localectl statusniecho $LANGbilan solishtiring va tizim darajasidagi hamda shell darajasidagi sozlamalar qachon farq qilishi mumkinligini tushuntiring.
Mashqni bajardim deyish uchun: skript chiqishida kutilmagan sana formatini ko'rsatayotgan server uchun avval qaysi ikki sozlamani (locale yoki LC_ALL qayta belgilashi) tekshirish kerakligini tushuntira olishingiz kerak.
Xulosa
timedatectl vaqt zonasi, joriy vaqt va NTP sinxronlash holatini, localectl esa til va formatga oid locale sozlamalarini boshqaradi. Production serverlar odatda UTC da qoladi, skriptlar esa barqaror formatlash uchun odatda LC_ALL=C dan foydalanadi — ikkala amaliyot ham ko'p serverli, avtomatlashtirilgan muhitda kutilmagan nomuvofiqliklarning oldini oladi.