Vaqt zonasi va locale sozlamalari
Server jismoniy joylashgan joydan qat'i nazar, uning tizim vaqti va matn/sana formati to'g'ri sozlanishi kerak — noto'g'ri vaqt zonasi log tahlilini chalkashtiradi, noto'g'ri locale esa buyruq chiqishidagi sana, raqam yoki valyuta formatini kutilmagan ko'rinishga keltiradi. systemd bu ikkalasini ham bitta oilaga tegishli vositalar — timedatectl va localectl — bilan boshqaradi.
Bu maqola init va systemd mavzusidagi systemd vositalar oilasini davom ettiradi.
O'quv maqsadlari
Maqolani tugatgach:
timedatectlbilan joriy vaqt zonasi va soat holatini tekshira va o'zgartira olasiz;- vaqt zonasini production serverda nega odatda
UTCda qoldirish tavsiya etilishini tushunasiz; localectlbilan tizim locale'ini ko'rish va o'zgartira olasiz;LANG,LC_*o'zgaruvchilari va tizim locale sozlamasi orasidagi farqni bilasiz;- noto'g'ri vaqt zonasi yoki locale sabab yuzaga keladigan tipik muammolarni aniqlay olasiz.
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
Muhim maydonlar:
- Time zone — joriy sozlangan vaqt zonasi;
- System clock synchronized — tizim soati NTP orqali server bilan mos ekanini bildiradi;
- NTP service — vaqt sinxronizatsiya xizmati faolmi.
Mavjud vaqt zonalarini ko'rish
Vaqt zonasini o'zgartirish
Info
Production serverlarda vaqt zonasini odatda UTCda qoldirish tavsiya etiladi, real geografik zonaga o'tkazish emas. Sababi: bir nechta serverdan yig'ilgan loglarni solishtirishda, cron jadvalida va vaqt bilan bog'liq hisob-kitoblarda barcha tizim bir xil, o'zgarmas nazariy nolga (UTC) tayanishi tahlilni ancha soddalashtiradi. Vaqt zonasiga xos ko'rsatish odatda ilova yoki taqdimot qatlamida bajariladi, tizim darajasida emas.
NTP sinxronizatsiyasini boshqarish
set-ntp true/false — tizim soatini tarmoq vaqt serveri bilan avtomatik sinxronlashni yoqadi yoki o'chiradi. O'chirilgan holatda soat faqat qattiq disk/apparat soatiga (RTC) tayanadi va vaqt o'tishi bilan asl vaqtdan siljib ketishi mumkin.
Warning
System clock synchronized: no holati diqqatga sazovor: TLS sertifikat tekshiruvi, cron jadvali, log tartiblash va ko'p tarqatilgan tizim (masalan, Kerberos autentifikatsiyasi) noto'g'ri vaqtga sezgir. Bu holatni ko'rsangiz, avval NTP xizmati (odatda systemd-timesyncd yoki chronyd) ishlab turganini tekshiring.
localectl: tizim locale sozlamalari
Joriy holatni ko'rish:
Locale — tizimning til, sana formati, raqam ajratgichi va valyuta ko'rsatish qoidalarini belgilaydigan sozlamalar to'plami. LANG=en_US.UTF-8 — ingliz tili, AQSh formatlari, UTF-8 kodirovkasi degani.
Mavjud locale'larni ko'rish
Agar kerakli locale ro'yxatda bo'lmasa, avval uni generatsiya qilish kerak:
Tizim locale'ini o'zgartirish
LANG/LC_* va joriy shell muhiti
localectl tizim darajasidagi sukut qiymatni sozlaydi, lekin har bir foydalanuvchi yoki shell sessiyasi buni o'z muhit o'zgaruvchisi bilan qayta belgilashi mumkin:
LANG— sukut locale, boshqaLC_*o'zgaruvchilar aniq belgilanmagan bo'lsa ular uchun ham amal qiladi;LC_TIME,LC_NUMERIC,LC_MONETARYva boshqalar — muayyan kategoriya uchun alohida locale;LC_ALL— barchaLC_*sozlamalarini vaqtincha bekor qiladi, eng yuqori ustuvorlikka ega.
Bu ikki buyruq bir xil vaqtni, lekin (agar mos locale o'rnatilgan bo'lsa) boshqa formatda ko'rsatishi mumkin.
Info
Skript yozishda sana yoki raqam formatini oldindan bilingan holda tahlil qilish kerak bo'lsa, LC_ALL=C yoki LC_ALL=C.UTF-8 bilan ishga tushirish tavsiya etiladi — bu foydalanuvchi yoki muhitning locale sozlamasidan qat'i nazar, buyruq chiqishini barqaror, taxmin qilinadigan formatda ushlab turadi.
Ko'p uchraydigan xatolar
Vaqt zonasini har bir serverda boshqacha qoldirish
Ko'p serverli muhitda har biri o'z geografik vaqt zonasida ishlasa, loglarni birlashtirish va voqealar ketma-ketligini tiklash qiyinlashadi. Barcha serverni UTC'da ushlab turish bu muammoni oldindan yo'q qiladi.
set-ntpni tekshirmasdan "vaqt noto'g'ri" degan xulosaga kelish
Ko'p hollarda muammo vaqt zonasida emas, NTP sinxronizatsiyasi o'chirilgan yoki ishlamayotganida bo'ladi. Avval timedatectl dagi System clock synchronized qiymatini tekshiring.
Kerakli locale generatsiya qilinmagan holda ishlatishga urinish
localectl set-locale biror locale mavjud emasligi haqida ochiq xato bermasligi mumkin; buyruq chiqishida kutilmagan C yoki POSIX formatiga qaytish shu sababdan bo'lishi mumkin. Avval locale -a bilan mavjudligini, kerak bo'lsa locale-gen bilan generatsiyasini tekshiring.
Amaliy mashqlar
timedatectlnatijasidagi barcha maydonlarni o'qib, har birining ma'nosini o'z so'zingiz bilan yozing.- Test VM'da vaqt zonasini
Asia/Tashkentga o'zgartiring, so'ngdatevatimedatectlnatijalarini solishtiring. LC_ALL=C dateva oddiydatenatijalarini solishtiring — farqni tushuntiring.localectl statusvaecho $LANGnatijalarini solishtirib, tizim darajasidagi va shell darajasidagi sozlama qachon farq qilishi mumkinligini tushuntiring.
Xulosa
timedatectl vaqt zonasi, joriy vaqt va NTP sinxronizatsiya holatini, localectl esa til va format bilan bog'liq locale sozlamalarini boshqaradi. Production serverlarda vaqt zonasini odatda UTC'da qoldirish, skriptlarda esa LC_ALL=C bilan barqaror format ta'minlash — ikkalasi ham ko'p serverli, avtomatlashtirilgan muhitda kutilmagan farqlarning oldini oladi.