Machine Introspection

Заримдаа компьютер буруу ажиллах тохиолдол гардаг. Ийм үед яагаад гэдгийг нь мэдэхийг хүсэх нь гарцаагүй. Түүнд туслах зарим хэрэгслүүдийг авч үзэцгээе!

Гэхдээ үүнээс өмнө та системийн дотоод төлөвийг шинжих (introspection) эрхтэй эсэхээ баталгаажуулах хэрэгтэй. Ихэнхдээ системийн дотоод төлөвийг шинжихэд тодорхой эрхүүд шаардагддаг, жишээ нь тодорхой бүлгийн гишүүн байх (компьютер унтраахад power бүлэг гэх мэт). Системийн супер хэрэглэгч болох root нь хамгийн дээд давуу эрхтэй бөгөөд юуг ч хийж чадна. Та sudo тушаалыг ашиглан root эрхээр тушаалыг ажиллуулж болно (гэхдээ маш болгоомжтой байгаарай!).

Юу болсон бэ?

Хэрэв ямар нэгэн зүйл буруу болбол хамгийн түрүүнд асуудал гарсан цаг үеийн орчимд яг юу болсныг шалгаж эхлэх хэрэгтэй. Үүний тулд бид систем, программуудын бүртгэл буюу логуудыг харах шаардлагатай.

Уламжлал ёсоор логууд /var/log хавтсанд хадгалагддаг байсан бөгөөд одоо ч олонх нь тэнд байдаг. Ихэвчлэн программ бүрд зориулсан файл эсвэл хавтас байдаг. Тэднийг уншиж шалгахад grep эсвэл less тушаалыг ашиглаарай.

Мөн үйлдлийн системийн цөмийн (kernel) лог байх бөгөөд үүнийг dmesg тушаалаар харж болно. Урьд нь энэ нь энгийн бичвэр файл хэлбэрээр байдаг байсан бол өнөө үед ихэвчлэн dmesg тушаалаар дамжуулж харах шаардлагатай болсон.

Эцэст нь, систем даяарх бүх лог мессежүүд цуглардаг “системийн лог” бий. Бүгд биш ч ихэнх Linux системүүдэд энэхүү логийг ар талд ажилладаг бүх үйлчилгээнүүдийг (болон бусад олон зүйлийг) удирддаг системийн даймон (daemon) болох systemd удирддаг. Хэрэв та root хэрэглэгч эсвэл admin, wheel бүлгийн гишүүн бол уг логийг арай тохиромжгүй интерфейстэй journalctl хэрэгслийг ашиглан харах боломжтой.

journalctl ашиглахдаа дараах тугуудыг анхаарах хэрэгтэй:

Одоо юу болж байна вэ?

Хэрэв системд ямар нэгэн зүйл буруу ажиллаж байгаа бол, эсвэл та зүгээр л системд юу болж байгааг мэдрэхийг хүсвэл одоо ажиллаж байгаа системийг шинжих дараах хэрэгслүүдийг ашиглаж болно:

Эхнийх нь top ба түүний сайжруулсан хувилбар болох htop бөгөөд систем дээр одоо ажиллаж байгаа процессуудын янз бүрийн үзүүлэлтүүдийг харуулдаг. CPU ашиглалт, санах ойн ашиглалт, процессуудын мод бүтцийн харагдац г.м. Тэнд маш олон товчлол байдаг бөгөөд t товчлуур нь процессуудыг мод хэлбэрээр харахад маш хэрэгтэй. Мөн та процессуудын модыг pstree тушаалаар харж болно (PID-үүдийг оруулахын тулд -p ашиглаарай). Хэрэв тэдгээр программууд яг юу хийж байгааг харахыг хүсвэл тэдний логуудыг шууд хянах хэрэгтэй. Үүнд journalctl -f, dmesg -w, болон tail -f тушаалууд хамгийн сайн туслах болно.

Заримдаа та системийнхээ нөөцийн ерөнхий ашиглалыг илүү нарийвчилж харахыг хүсэж болно. Үүнд dool маш тохиромжтой. Энэ нь оролт/гаралт (I/O), сүлжээ, CPU ашиглалт, контекст шилжилт (context switches) зэрэг олон дэд системүүдийн нөөцийн хэмжүүрийг бодит цаг хугацаанд харуулдаг. Суралцахын тулд man dool-ээс эхлээрэй.

Хэрэв таны дискний зай дуусаж байгаа бол дараах хоёр гол тушаалыг мэдэж байх хэрэгтэй: df ба du. Эхнийх нь таны системийн бүх партишнуудын төлөвийг харуулдаг (үүнийг -h тугтай ашиглаад үзээрэй), харин сүүлийнх нь таны зааж өгсөн хавтас болон тэдгээрийн агуулгын хэмжээг хэмждэг (үүнийг мөн -h ба -s тугтай ашиглаж болно).

Сүлжээний ямар холболтууд нээлттэй байгааг мэдэхийн тулд ss тушаалыг ашиглана. ss -t нь бүх нээлттэй TCP холболтыг харуулна. ss -tl нь таны систем дээрх хүсэлт хүлээж буй (listening буюу сервер) бүх портуудыг харуулна. -p туг нь уг холболтыг ямар процесс ашиглаж байгааг харуулах бөгөөд -n нь портын дугаарыг шуудан тоогоор харуулдаг.

Системийн тохиргоо

Системийг тохируулах маш олон арга байдаг ч бид хамгийн нийтлэг хоёр салбарыг авч үзэх болно: сүлжээ болон үйлчилгээнүүд (services). Систем дээрх ихэнх программууд хэрхэн тохируулахыг өөрийн manpage хуудаснаа тайлбарласан байдаг бөгөөд ихэвчлэн системийн тохиргооны хавтас болох /etc доторх файлуудыг засварлахыг шаарддаг.

Хэрэв та сүлжээгээ тохируулахыг хүсвэл ip тушаал үүнийг хийх боломжийг олгоно. Түүний аргументууд нь бага зэрэг хачирхалтай бүтэцтэй байж болох ч ip help command нь танд сайн туслах болно. ip addr нь таны сүлжээний картууд болон тэдгээрийн тохиргоог (IP хаягууд гэх мэт) харуулдаг бол ip route нь сүлжээний урсгал сүлжээн дэх өөр өөр хостууд руу хэрхэн чиглэгдэж байгааг (routing) харуулдаг. Сүлжээний асуудлуудыг ихэвчлэн зөвхөн ip хэрэгслээр шийдэж болдог. Мөн утасгүй сүлжээний картуудыг удирдах iw тушаал бий. ping нь асуудал хэр зэрэг гүн байгааг шалгах тохиромжтой хэрэгсэл юм. Домэйн нэр (google.com), гадаад IP хаяг (1.1.1.1) болон дотоод IP хаяг (192.168.1.1 эсвэл default gateway) руу ping хийж үзээрэй. Мөн DNS тохиргоогоо (домэйн нэрсийг IP хаяг руу хэрхэн хөрвүүлж байгааг) шалгахын тулд /etc/resolv.conf файлыг харж болно.

Үйлчилгээнүүдийг тохируулахын тулд өнөө үед сайн ч бай, муу ч бай systemd-тэй харилцах шаардлагатай болсон. Таны систем дэх ихэнх үйлчилгээнүүд өөрийн гэсэн systemd тохиргооны файл бүхий нэгжтэй (unit) байна. Эдгээр файл нь тухайн үйлчилгээ эхлэхэд ямар тушаал ажиллуулах, хэрхэн зогсоох, логуудыг хаана хадгалах зэргийг зааж өгдөг. Тэдгээрийг уншиж ойлгоход тийм ч хэцүү биш бөгөөд ихэнхийг нь /usr/lib/systemd/system/ хавтсаас олж болно. Мөн та өөрийн тусгай тохиргоог /etc/systemd/system хавтсанд тодорхойлж болно.

Ямар нэгэн systemd үйлчилгээтэй ажиллахын тулд systemctl тушаалыг ашиглана. systemctl enable UNIT нь үйлчилгээг систем ачаалах (boot) үед автоматаар эхэлдэг болгоно (disable нь үүнийг буцаана), харин start, stop, болон restart нь тэдгээрийн үүрэгт ажлыг гүйцэтгэнэ. Хэрэв ямар нэгэн зүйл буруу болбол systemd танд мэдэгдэх бөгөөд та journalctl -u UNIT тушаалаар тухайн программын логийг харах боломжтой. Мөн systemctl status тушаалаар системийн бүх үйлчилгээнүүдийн төлөвийг харж болно. Хэрэв систем тань удаан ачаалж байгаа мэт санагдвал энэ нь зарим удаан ажилладаг үйлчилгээнүүдээс болсон байж болох бөгөөд та systemd-analyze (үүнийг blame тугтай ажиллуулаад үзээрэй) тушаалаар тэдгээрийг олж тогтоох боломжтой.


Энэ хуудсыг засварлах.

Лиценз: CC BY-NC-SA.