Matnli fayllarni ko'rish
Faylni tahrirlash yoki qayta ishlashdan oldin uni ko'rib chiqing. Kichik konfiguratsiya fayli, katta log fayli va real vaqt rejimida yangi satrlar qo'shilib borayotgan log oqimi uchun turli vositalar kerak bo'ladi. To'g'ri ko'rish vositasini tanlash terminaldan qulay foydalanishga yordam beradi, keraksiz katta hajmdagi ma’lumotni yuklashning oldini oladi va binar boshqaruv belgilarini terminalga chiqarib yuborish xavfini kamaytiradi.
Misollar Ubuntu Server LTS, GNU Coreutils va less asosida berilgan. Siz Fayl va katalog buyruqlari maqolasidagi yo'llar va xavfsiz laboratoriya muhiti bilan ishlash tushunchalarini bilishingiz kerak.
Namuna log faylini yaratish
mkdir -p ~/lab/viewing-text
for n in $(seq 1 30); do
printf '%s level=INFO request_id=req-%03d message="test request"\n' \
"$(date -u +%FT%TZ)" "$n"
done > ~/lab/viewing-text/app.log
Faylni tekshiring:
file ~/lab/viewing-text/app.log
stat -c 'size=%s bytes, mode=%A, file=%n' ~/lab/viewing-text/app.log
wc -l ~/lab/viewing-text/app.log
Kutiladigan natija:
/home/<username>/lab/viewing-text/app.log: ASCII text
size=... bytes, mode=-rw-r--r--, file=/home/<username>/lab/viewing-text/app.log
30 /home/<username>/lab/viewing-text/app.log
Fayl hajmi va vaqt belgisi sizning tizimingizda boshqacha bo'lishi mumkin. Muhim jihat — fayl matnli fayl ekanligi va yangi qator belgisi bilan tugaydigan 30 ta yozuvdan iboratligidir.
Faylni chiqarishdan oldin tekshirish
Noma’lum faylni terminalga chiqarishdan oldin uning metadata ma’lumotlarini tekshiring:
<file> o'rniga haqiqiy fayl yo'lini yozing.
Bu tekshiruvlar uchta savolga javob beradi:
- Fayl hajmi qancha?
- Fayl qanday turdagi ma’lumotni saqlayotganga o'xshaydi?
- Joriy foydalanuvchi faylni o'qiy oladimi?
Warning
Binar fayllar, disk obrazlari, siqilgan arxivlar yoki noma’lum qurilma fayllarini tekshirmasdan cat bilan terminalga chiqarmang. Ular tushunarsiz natija, terminal boshqaruv ketma-ketliklari yoki juda katta ma’lumot oqimini chiqarishi mumkin.
Avval file buyrug'idan foydalaning. Binar faylni tekshirish kerak bo'lsa, kichik bayt chegarasi bilan hexdump -C kabi vositalardan foydalaning.
cat: kichik faylni to'liq chiqarish
cat bir yoki bir nechta fayl tarkibini standart chiqishga ketma-ket chiqaradi.
Bitta kichik faylni tez ko'rish uchun:
30 qatorli laboratoriya fayli uchun bu qulay. Lekin 500 MB hajmdagi log fayli uchun cat yaxshi tanlov emas. U terminalni juda ko'p ma’lumot bilan to'ldiradi va fayl ichida harakatlanish imkonini bermaydi.
Ikki fayl tarkibini ketma-ket chiqaring:
printf 'alpha\n' > ~/lab/viewing-text/a.txt
printf 'beta\n' > ~/lab/viewing-text/b.txt
cat ~/lab/viewing-text/a.txt ~/lab/viewing-text/b.txt
Natija:
cat fayllar orasiga alohida ajratuvchi belgi qo'shmaydi.
Agar birinchi fayl yangi qator belgisi bilan tugamasa, ikkinchi faylning birinchi qatori terminalda shu qatorga qo'shilib ketadi.
Foydali ko'rsatish parametrlari:
-n natijadagi qatorlarni raqamlaydi.
GNU -A tabulyatsiya belgilarini, qator oxirlarini va ayrim ekranda ko'rinmaydigan belgilarni ko'rinadigan qiladi. Bu bo'sh joylar yoki qator oxiridagi yangi qator belgisi muhim bo'lganida foydalidir.
less: katta fayllarni sahifalab ko'rish
Fayl bir ekran hajmidan katta bo'lsa yoki matn ichida qidirish kerak bo'lsa, less dan foydalaning:
less ichida ko'p ishlatiladigan tugmalar:
Spaceyokif— bir ekran oldinga o'tish.b— bir ekran orqaga qaytish.g— fayl boshiga o'tish.G— fayl oxiriga o'tish./request_id=req-020— oldinga qarab qidirish.nvaN— keyingi va oldingi mos natijaga o'tish.q— dasturdan chiqish.
Qator raqamlari va uzun qatorlar bilan ishlash:
-N qator raqamlarini ko'rsatadi.
-S uzun qatorlarni keyingi qatorga o'ramaydi. Ularning ekranga sig'magan qismini vaqtincha yashiradi. Qatorning qolgan qismini ko'rish uchun gorizontal harakatlanish tugmalaridan foydalaning.
Bu parametrlar faylning o'zini o'zgartirmaydi.
more ham sahifalab ko'rish dasturi bo'lib, favqulodda tiklash muhitlarida mavjud bo'lishi mumkin. Odatda less qulayroq, chunki u orqaga harakatlanish va kengroq qidirish imkoniyatlarini beradi.
head: fayl boshini ko'rish
Standart holatda head faylning dastlabki 10 qatorini chiqaradi:
Aniq beshta qatorni chiqarish:
Natija namunasi:
2026-07-29T06:00:00Z level=INFO request_id=req-001 message="test request"
2026-07-29T06:00:00Z level=INFO request_id=req-002 message="test request"
2026-07-29T06:00:00Z level=INFO request_id=req-003 message="test request"
2026-07-29T06:00:00Z level=INFO request_id=req-004 message="test request"
2026-07-29T06:00:00Z level=INFO request_id=req-005 message="test request"
Sizdagi vaqt belgisi boshqacha bo'ladi. Muhim jihat — dastlabki beshta yozuv ko'rsatilganidir.
Fayl boshidan baytlar bo'yicha namuna olish:
-c belgilarni emas, baytlarni sanaydi. Shu sababli u UTF-8 belgining o'rtasidan kesib yuborishi mumkin.
Oddiy qatorlarga asoslangan log fayllari uchun -c o'rniga -n dan foydalanish ma’qul.
tail: fayl oxirini ko'rish va o'sishini kuzatish
Standart holatda tail faylning oxirgi 10 qatorini chiqaradi:
+N shakli yordamida ma’lum qatordan boshlab chiqarish mumkin:
30 qatorli faylda bu buyruq 26-qatordan 30-qatorgacha bo'lgan qismini chiqaradi.
+ belgisi ma’noni o'zgartiradi:
tail -n 5— oxirgi 5 qator;tail -n +5— 5-qatordan fayl oxirigacha.
Log faylini real vaqt rejimida kuzatish
Birinchi terminalda quyidagi buyruqni ishga tushiring:
Ikkinchi terminalda faylga yangi qator qo'shing:
printf '%s level=ERROR request_id=req-031 message="database timeout"\n' \
"$(date -u +%FT%TZ)" >> ~/lab/viewing-text/app.log
Birinchi terminalda yangi qator darhol ko'rinadi.
tail -f ni to'xtatish uchun Ctrl+C tugmalarini bosing.
GNU tail -f standart holatda ochilgan fayl deskriptori orqali faylni kuzatadi.
Agar log fayli nomi o'zgartirilib rotatsiya qilinsa, jarayon eski faylni kuzatishda davom etishi mumkin.
Fayl nomi bo'yicha kuzatish uchun:
GNU Coreutils dasturida -F quyidagiga teng:
Bu parametr ko'plab log rotatsiyasi tizimlari uchun foydalidir.
Agar dastur oddiy faylga emas, systemd-journald xizmatiga log yozsa, tail o'rniga quyidagidan foydalaning:
wc yordamida sanash
Parametrsiz wc qatorlar, so'zlar va baytlar sonini chiqaradi.
wc -l ekranda ko'rinadigan qatorlar sonini emas, yangi qator belgilarining sonini hisoblaydi.
Oxirida yangi qator belgisi bo'lmagan faylga misol:
printf 'first\nsecond' > ~/lab/viewing-text/no-final-newline.txt
wc -l ~/lab/viewing-text/no-final-newline.txt
Natija:
Faylda ko'rinish jihatidan ikkita qator bor, lekin faqat bitta yangi qator belgisi mavjud.
Standart chiqish va standart xato oqimi
Agar cat faylni ocha olmasa, xatolik standart xato oqimiga chiqariladi:
Odatdagi natija:
Standart chiqishni boshqa faylga yo'naltirish standart xato oqimini yashirmaydi:
Xatolik terminalda ko'rinishda davom etadi.
Bash cat dasturini ishga tushirishdan oldin qayta yo'naltirishni tayyorlaydi. Shu sababli output.txt fayli yaratilishi yoki mavjud bo'lsa tarkibi tozalanishi mumkin.
Maqsadingiz faqat faylni ko'rish bo'lsa, keraksiz > qayta yo'naltirishidan foydalanmang.
Pipe va qayta yo'naltirishlar keyingi matn va oqimlar bo'limida tushuntiriladi.
Faylni o'qish huquqi bo'lmasa
Production muhitidagi ko'plab log fayllarini barcha foydalanuvchilar o'qiy olmaydi. Ayniqsa, alohida tizim foydalanuvchisi nomidan ishlaydigan servislar /var/log ichiga yozgan fayllar shunday bo'lishi mumkin:
Bu tail dasturidagi xato emas. Bu ruxsat tizimining to'g'ri ishlayotganini bildiradi.
Muammoni quyidagi tartibda tekshiring:
Fayl egasi va guruhini o'z foydalanuvchingiz hamda a’zo bo'lgan guruhlaringiz bilan taqqoslang.
Ko'p uchraydigan uchta yechim, tavsiya etilish tartibida:
-
Agar foydalanuvchi hisobingiz faylni o'qish huquqiga ega guruhga qo'shilishi mumkin bo'lsa, har safar root huquqiga o'tish o'rniga shu guruhga qo'shilish to'g'riroq. Debian va Ubuntu tizimlarida ko'plab tizim loglari uchun bu ko'pincha
admguruhidir:Guruhdagi o'zgarish kuchga kirishi uchun yangi login sessiyasini boshlash kerak.
-
Agar kerakli huquqni beradigan guruh bo'lmasa va faylni faqat bir martalik o'qish yetarli bo'lsa, haqiqiy muammoni tekshirayotgan administrator uchun quyidagidan foydalanish mumkin:
-
Agar bir nechta aniq foydalanuvchiga doimiy o'qish huquqi kerak bo'lsa, keng guruh yoki doimiy root huquqi o'rniga log fayliga
setfaclorqali aniq ruxsat berish mumkin. Lekin log rotatsiyasi vaqtida servis ruxsatlarni qayta o'rnatishi mumkin. Bu mavzu ruxsatlar va ACL haqidagi maqolalarda ko'rib chiqiladi.
Log faylida Permission denied xatosini ko'rib, uning ruxsat rejimini chmod yordamida kengaytirmang.
Bu tizimdagi barcha foydalanuvchilar uchun kirishni ochishi mumkin. Ularning ayrimlari autentifikatsiya yoki dastur loglarini umuman ko'rmasligi kerak.
Bundan tashqari, log rotatsiyasi vositasi keyingi aylantirishda siz o'zgartirgan ruxsatlarni yana avvalgi holatga qaytarishi mumkin.
Amaliy vaziyat: eng so'nggi xato kontekstini topish
Muammo: servis katta app.log fayliga yozdi va siz faylni tahrirlamasdan eng so'nggi xatoni topishingiz kerak.
Faylni tekshiring:
log="$HOME/lab/viewing-text/app.log"
file "$log"
stat -c 'size=%s modified=%y' "$log"
test -r "$log" || echo "not readable"
Laboratoriya uchun bitta xato yozuvini qo'shing:
printf '%s level=ERROR request_id=req-032 message="cache unavailable"\n' \
"$(date -u +%FT%TZ)" >> "$log"
Fayl oxirini ko'ring:
To'g'ridan-to'g'ri qidiring:
Natija namunasi:
31:2026-07-29T06:00:00Z level=ERROR request_id=req-031 message="database timeout"
32:2026-07-29T06:01:00Z level=ERROR request_id=req-032 message="cache unavailable"
Xulosa:
tailvaqt oralig'ini toraytiradi;lessatrofdagi kontekstni ko'rishga yordam beradi;grep -naniq mos natijalar uchun qator raqamlarini ko'rsatadi.
Keng tarqalgan xatolar
- Juda katta fayllar uchun
catishlatib, terminal tarixini keraksiz ma’lumot bilan to'ldirish. tail -fqo'lda to'xtatilmaguncha ishlashda davom etishini unutish.tail -fhar qanday log rotatsiyasi usulida fayl nomini kuzatishda davom etadi deb hisoblash.- UTF-8 matnda
head -cishlatib, belgini o'rtasidan kesib yuborish. wc -lnatijasini yangi qator belgilarining soni emas, ekranda ko'rinadigan qatorlar soni deb tushunish.- Faylni faqat ko'rmoqchi bo'lib, natijani qayta yo'naltirish va tasodifan fayl tarkibini tozalab yuborish.
Mashqlar
~/lab/viewing-textkatalogida 50 qatorli fayl yarating va faqat dastlabki yetti qatorini ko'rsating.- Faqat oxirgi beshta qatorni ko'rsating. Keyin
tail -n +46yordamida 46-qatordan fayl oxirigacha bo'lgan qismini chiqaring. - Faylni
less -N -Sbilan oching, request ID bo'yicha qidiring va hech narsani o'zgartirmasdan dasturdan chiqing. - Oxirida yangi qator belgisi bo'lmagan fayl yarating va nima uchun
wc -lkutilganidan bitta kam qator ko'rsatishini tushuntiring.
Tekshirish mezoni: fayl hajmi, kerakli ma’lumot faylning qayerida joylashgani va faylga yangi ma’lumot yozilib borayotgan-bormayotganiga qarab cat, less, head va tail orasidan to'g'ri vositani tanlay olishingiz kerak.
Manbalar
- GNU Coreutils qo'llanmasi: https://www.gnu.org/software/coreutils/manual/coreutils.html
catbuyrug'i: https://www.gnu.org/software/coreutils/manual/html_node/cat-invocation.htmlheadbuyrug'i: https://www.gnu.org/software/coreutils/manual/html_node/head-invocation.htmltailbuyrug'i: https://www.gnu.org/software/coreutils/manual/html_node/tail-invocation.htmlwcbuyrug'i: https://www.gnu.org/software/coreutils/manual/html_node/wc-invocation.htmllessqo'llanma sahifasi: https://man7.org/linux/man-pages/man1/less.1.html