Skip to content

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:

  • timedatectl bilan joriy vaqt zonasi va soat holatini tekshira va o'zgartira olasiz;
  • vaqt zonasini production serverda nega odatda UTCda qoldirish tavsiya etilishini tushunasiz;
  • localectl bilan 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:

timedatectl
               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

timedatectl list-timezones | grep -i tashkent
Asia/Tashkent

Vaqt zonasini o'zgartirish

sudo timedatectl set-timezone Asia/Tashkent
timedatectl | grep 'Time zone'
               Time zone: Asia/Tashkent (+05, +0500)

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

sudo timedatectl set-ntp true
timedatectl | grep -E 'synchronized|NTP service'

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:

localectl status
   System Locale: LANG=en_US.UTF-8
       VC Keymap: us
      X11 Layout: us

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

locale -a | grep -i utf8 | head -n 5

Agar kerakli locale ro'yxatda bo'lmasa, avval uni generatsiya qilish kerak:

sudo locale-gen en_US.UTF-8

Tizim locale'ini o'zgartirish

sudo localectl set-locale LANG=en_US.UTF-8
localectl status

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:

echo "$LANG"
LC_ALL=C date
  • LANG — sukut locale, boshqa LC_* o'zgaruvchilar aniq belgilanmagan bo'lsa ular uchun ham amal qiladi;
  • LC_TIME, LC_NUMERIC, LC_MONETARY va boshqalar — muayyan kategoriya uchun alohida locale;
  • LC_ALL — barcha LC_* sozlamalarini vaqtincha bekor qiladi, eng yuqori ustuvorlikka ega.
date
LC_TIME=en_GB.UTF-8 date

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

  1. timedatectl natijasidagi barcha maydonlarni o'qib, har birining ma'nosini o'z so'zingiz bilan yozing.
  2. Test VM'da vaqt zonasini Asia/Tashkentga o'zgartiring, so'ng date va timedatectl natijalarini solishtiring.
  3. LC_ALL=C date va oddiy date natijalarini solishtiring — farqni tushuntiring.
  4. localectl status va echo $LANG natijalarini 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.

Manbalar