Линукс/Гарын авлага

**Оршил**

Линукс үйлдлийн систем нь төдийлөн олон хүн ашигладгүйч маш боловсронгуй билээ. Одоо уг үйлдлийн сисем дээр terminal горимоос хэрхэн зарим тохиргоонуудыг хийж болхийг тайлбарлъя .

## Линуксын зарим тохиргоо 
## Сүлжээний холболтыг тохируулах
Таны LAN-д холбогдсон шилэн кабелийн холболтын интерфэйсийг эхлүүлэх болон зогсооx нь Ubuntu-г ачааллах болон унтраах үед зохицуулагддаг. Гэсэн хэдийч хэрэглэгч /etc/init.d дахь коммандуудыг ашиглан холболтын интерфэйсийг асааж унтрааж болно мөн update-rc.d - г ашиглан сүлжээнд автоматаар холбогдох тохируулгыг хийж болно.

### Этэрнэт холболтын эхлүүлэх болон зогсоох
Хэрэглэгч Ubuntu асаахад этэрнэт интерфэйсүүд олон тохиолдлоор гарч ирдэг нь common boot run level нь run levels 3 болон 5 дээр тохируулагдсан үед network сервис нь асах горимд орсон байдгаас үүддэг юм. Тэнд хэдэн энгийн коммандуудын удирдхад зориулсан үндсэн тохиргооны багц файлууд болон скриптүүд байдаг.
Ubuntu-гийн хувьд удирдлагын скриптүүд болон тохиргооны файлууд нь etc/network/ байршилд хадгалагддаг. NIC нүүд нь /etc/network//interfaces ийг өөрчилснөөр тохируулагддаг. Файл нь энгэж харагдана :
*auto lo
iface lo inet loopback
*auto eth0
iface eth0 inet dhcp
*auto eth1
iface eth1 inet dhcp
*auto eth2
iface eth2 inet dhcp
*auto wlan0
iface wlan0 inet dhcp

Энэ файлаас илүү мэдээлэл авахыг хүсвэл уг командыг бичнэ .  
*less /usr/share/doc/network-manager/README.Debian 

Тохируулагдсан network-scripts файлуудыг эхлүүлэгч скрипт нь /etc/init.d/network юм. Бусад Линуксын сервисүүдийг авч үзвэл хэрэглэгч network сервисийг /etc/init.d/networking коммандыг ашиглан эхлүүлж ,зогсоож чадна.
Бүх NIC-г унтраагаад буцаагаад асаах. Холболтын скриптийн аливаа өөрчлөлтийг зөвшөөрснөөр л өөрчлөлтийг авна. Код нь :
*sudo /etc/init/d/networking restart 

Магадгүй таны илүү зарлсан интерфэйс таны систем дээр байхгүй гэх алдаа авч магадгүй жишээ нь wireless интефэйсүүд. Та өөрт байхгүй ямарч интефэйсийг алгасаж болно.
Эхлэх болон зогсоох сонголтыг ашиглаэ холболтын интерфэйсүүдийг асааж унтраа.

 *sudo /etc/init.d/networking stop	 Shutdown network interfaces 
 *sudo /etc/init.d/networking start	 Bring up network interfaces 

NIC нуудыг идэвхтэй идэвхигүй байгааг шалгахын тулд –a г ашигладаг.
$ ifconfig –a $ 
Ifconfig ийг ашиглахын оронд арай илүү шинэ ip коммандыг ашиглаж болно.ip комманд нь хэрэглэгчийн холболтын мэдээлэлүүдийг харуулхад чиглэгдэн зохиогдсон, холболтын төхөөрөмжүүдийн тохиргоог солих, холболт хийх, IP туннелүүд. Ip коммандын eth0 интерфэйсийн мэдээлэлийш харахдаа. 
ip addr show eth0  
ip комманд нь синтаксыг багасгахад зориулагдсан. Хэрэв та IOS Cisco коммандуудыг мэддэг бол ip комманд нь ижил зарчимаар ажилладаг.Жишээ нь ip addr show гэж бичхийн оронд : ip a гэх мэт  
ip коммандууд нь олон холболтын зүйлсийг давхар удирдаж чадна. Зүйлс гэдэг нь хаяг юм. Энэ нь ip г холболтын хаягуудыг тохируулхыг зөвшөөрдөг.

## Debian Software Packages
Linux үйлдлийн систем дээр package буюу Software-ийг terminal-ийн орчноос суулгахдаа 2 төрлийн коммандаар суулгадаг. Үүнд
### Advanced Packaging Tool /APT/
APT-GET нь repository оос тухайн package ийг хайж татаж аваад суулгах, устгах, шинчлэх зэрэг үйлдлүүдийг хийдэг. 

*	apt-cache search [package нэр] коммандаар package ийг хайж нэмэлт мэдээллийг харна /description/ 
*	apt-get install [package нэр] коммандаар тухайн package-ийг суулгана 
*	apt-cache pkgnames [package нэр] коммандаар өгөгдгсөн нэрийг агуулсан package үүдийг харна 
*	apt-cache show [package нэр] коммандаар тухайн package ийн мэдээллийг харнаа. Үүнд үйлдвэрлэгч, хувилбар, хэмжээ гэх мэдээллүүд харагдана 
*	apt-cache stats коммандаар тухайн package ийн статийг харуулна 
*	apt-get update коммандаар package үүдийн repository той синхрончлоно 
*	apt-get upgrade нь package үүдийг шинэчлэнэ 
*	apt-get dist-upgrade нь package үүдийг шинэчлэхдээ хуучин файлуудыг устган шинэ файл үүсгэх эрхтэйгээр package үүдийг шинэчилдэг 
*	apt-get remove нь тухайн package ийг үйлдлийн систем дээрээс устгах үйлдлийг тус тус хийдэг. 

### DPKG 
	DPKG нь CD-ROM, Flash Disk гэх мэт хэрэгслүүдээс .deb өргөтгөлтэй файлыг уншиж суулгахад ашиглагддаг програм хангамж юм.

* dpkg -i {.deb package}	Package ийг суулгана. Хэрвээ суусан байгаа тохиолдолд version бага бол update хийнэ. 
* dpkg -R {Directory нэр}	Өөр directory оос суулгна. 
* dpkg -r {package нэр}	Суусан package ийн тохиргооны файлыг устгана 
* dpkg -P {package нэр}	Package ийг тохиргооны файл гэх мэт бүх файлтай хамт устгана 
* dpkg –l	Суусан package ийн тухай товч мэдээллийг харуулна хувилбар гэх мэт 
* dpkg -l {package нэр}	Тухайн package ийн товч мэдээллийг харуулна 
* dpkg -L {package нэр}	Package суусан хавтасны байршилыг олно 
* dpkg -c {.Deb package}	.deb доторхи файлуудыг харуулна 
* dpkg -S {/path/to/file}	Файлыг ямар package эзэмшиж байгааг харуулна. 
* dpkg -p {package}	Package ийн хувилбар гэх мэт мэдээллүүдийг харуулна 
* dpkg -s {package} | grep Status	Package ийг суусан эсэхийг шалгана

## Цагыг хэрхэн тохируулах вэ ? /(Mastering Time)
Линукс үйлдийн системд цагийг зөв тааруулах нь системийн хэвийн ажиллагаанд чухал нөлөөтэй. Линукс үлдлийн системд цагийг 2 аргаар тохируулж өгж болдог нь системийн цаг, техникийн цаг юм. Техникийн цагыг линуксийн бүүт хийх явцад тохируулж өгдөг
### Системийн цаг
Системийн цаг нь файлийн үүсэлтийн цаг,процесийн ажилласан цаг,болон бусад бүх үйлдийн цагийг тодорхойлход ашиглагддаг.Системийн цагыг харж бас өөрөө тохируулах боломжтой (date коммандын тусламжтай) эсвэл автоматаар (ntpd сервисийн тусламжтай). 
Техникийн цаг нь эх хавтангийн CMOS ийн нэг хэсэг бөгөөд систем унтарсан байхад баттерей холбогдсон үед ажилладаг. Хэрэглэгч техникийн цагийг hwclocк коммандаар тохируулж болдог.
Линукст цагтай харьцаж болох олон коммандууд бий. Жишээ нь цагийг олон янзаар шалгаж болдог , clockdiff зэрэг (үүнийг компьютерүүдийн цагийн зөрүүг олход ашиглагддаг) мөн uptime (таний систем хэр хугацаанд ажилласан байгааг олход ашиглана).\\
Дүрслэлийн түүлсийг ашиглан цаг/өдөрийг тохируулах
UBuntu болон бусад Линуксийн системүүддэх дүрслэлийн түүлсийг цаг ,цагийн бүс , өдөр болон цагийн цонхнуудыг (sudo time-admin command) гэж дуудан сольж болно.Энэ цонхыг ашиглан Network Time Protocol(NTP) ийг идэвхжүүлж болно. Энгэснээр Линукс системийн цаг болон өдөрийг сонгогдсон сервер дээрээс сүлжээг ашиглан автоматаар тохируулдаг. Хэрэглэгч NTP г суулгах хэрэгтэй болж магадгүй. Энэ нь Цаг болон өдрийн тохиргоо цонхонд энгийн товч хэлбэрээр байршиж байгаа.
Хэрэглэгчийн Линукс системийн  цагийн бүс нь /etc/localtime файл д тулгуурладаг. Хэрэглэгч цагийн бүсийг /usr/share/zoneinfo гоос мэдээлэлийг хуулж авснаар шуурхай байдлаар тохируулж болно.

### Системийн цагийг харах болон тохируулах
Цагийн тохиргоо нь үндсэн коммандад суурилсан цаг болон өдөрийг тохируулах интэрфэйс юм. Хэрэв та NTP г ашиглан автоматаар тохируулаагүй бол шүү дээ. Дараагийн удаа Ubuntu ачааллахад системийн цаг техникийн (эсвэл NTP-ийг идэвхижүүлсэн тохиолдолд NTP серверээс) хамаарж шинэчлэгдэх. Дараагийн удаа системийг унтраах үед техникийн цаг системийн цагаар шинэчлэгдэж компьютерийг унтраах үед байсан цагийг хадгална. Техникийн цагийг hwclock коммандаар сольж болно

### NTP г ашиглан өдөр/цагийн тохируулга хийх
Хэрэглэгч Ubuntu суулгах үед тэдэнд системийн цаг болон өдөрийг тохируулах боломж өгдөг.Харин урьдчилан тохируулагдсан NTP г ашигласнаар таны цаг систем дахин ачаалласны дараагаас тохируулагдана. Суулгагч нь ntpd daemon  суулгаж таны цагийн алдааг тааруулсаар байх болно.
Хэрэв хэрэглэгч NTP ийг Линуксийг суулгаж байх үедээ тохируулж өгөөгүй бол дараа нь ntpd сервисийг асааснаар ашиглаж болно. 
Мөн уг коммандыг ашигласнаар тохируулах боломжтой
*sudo apt-get install ntp
Ntpd сервис нь /etc/ntpd.conf файл дахь мэдээлэлийг ашигладаг. Хэрэглэгч ашиглаж байгаа цагийнхаа нэр болон IP хаягийг харах боломжтой.

Хэдий та ntp г шууд суулгасан эсвэл суулгагчаар автоматаар хийлгэсэн байсанч үр дүнд нь таны цагийг цагийн сервэрээс авна .Хэрэв чухал хэрэгцээ гарах үед (GPS атомын цаг ) ntpd ашиглах нь нөөцийн болон аюулгүй байдлын асуудалд орно. Үүнээс үүдэн зарим системийн админууд ntpdate ийг ашиглахыг илүүд үздэг.
sudo ntpdate pool.ntp.org 
15 Aug 00:37:12 ntpdate[9706]: 
Adjust time server 66.92.68.11 

Хэрэв хэрэглэгч ntpd г ашиглаж байх үедээ ntpdate ийг ашиглахыг оролдвол ийм алдаа заана:
*sudo ntpdate pool.ntp.org
15 Aug 00:37:00 ntpdate[9695]: the NTP socket is in use, exiting
sudo ntpd –qg
-q нь ntpd г цагийн тохиргоог хийж дууссаны дараа гарахыг хэлж байгаа. –g нь цагийг 1000 секундээс илүү унтран гажигтхаас сэргийлнэ.

## Grep текст хайх
Grep коммандыг файлаас стрингийг илүү далайцтайгаар хайх үед ашигладаг.Бодит байдал дээр to grep ( гэрэлтэх) гэх үйл үг нь компьютерийн ертөнцөд нэвтэрсэн байдаг .
 Жишээлвэл :
grep –ийн командууд:             
* grep francois myfile.txt                          Francois -ийн шугмын агуулга харуулах 
* grep 404 /var/log/httpd/access_log                404-ийг агуулгыг харах 
* ps auwx | grep init Show init                    ps - ийн гаралтын шугмыг харах 
* ps auwx | grep “\[*\]”                           Хаалтын доторх команд-ыг харуулах 
* dmesg | grep “[ ]ata\|^ata”                      ata -ийн тохиргоог харуулах  

404 т access_log оор хайхад хэрэглэгч өөрийн вэб дэх олдохгүй хуудаснуудын тухай хүсэлтийг харж болно.( энэ нь хэн нэгэн таны системд халдаж мэдээлэл цуглуулах гэж оролдож байгаа эсвэл та тэрхүү хуудсыг шилжүүлсэн эсвэл нээхээ мартсан байх магадлалтай.
Ps коммандын хүснэгтчилсэн коммандуудыг гаргах нь ps коммандын харуулж чадахгүй коммандуудыг харуулдаг. Сүүлийн комманд нь АТА төхөөрөмжийн мэдээллийн кэрнэлийн буфэр рингийг шалгадаг.Жишээ нь хатуу диск болон СД ром.
Grep комманд нь нэг болон нилээн хэдэн файлыг зэрэг хайх боломжтой.

Энэхүү комманд нь /etc/httpd/conf and /etc/httpd/conf.d хаягаар файлуудыг хайна.
Стрингийн хаяг нь VirtualHost:
Таны системдээ юу2 суулгаснаас хамааран /etc/httpd  хаяг дахь conf гэж эхэлсэн файлууд нь байхгүйч байж магадгүй.Мөн хэгэлэгч энхүү техникийг бусад файлуудад ашиглаж болно.
Grep команддаа (-n) ээр мөрийн дугаарыг оруулснаар яг тухайн мөрийг олох боломжтой
* grep -Rn VirtualHost /etc/httpd/conf*
Хайлтыг өнгөөр тодруулахын тулд –color ийг ашиглана.
* grep --color -Rn VirtualHost /etc/httpd/conf*
Үндсэндээ олон файлыг зэрэг хайх үед файлууд хайотын үр лүн бүрт дарааллан хэвлэгдэнэ. –h ийг ашигласнаар файлуудын нэрийг харуулхыг болиулна. Энэ хайлт нь auth.log файл дахь sshd стринг ээр хийж байгаа юм.
* Grep -h sshd /var/log/auth.log
Хэрэглэгч кэйсийг алгасахыг хүсвэл  -1 ийг ашиглана.
* grep -1 selinux /var/log/messages       
Хайлтын үед зөвхөн нэрийг нь хэвлэхийг хүсвэл –l гэж оруулна.
* grep -Rl VirtualHost /etc/httpd/conf*
Хайлтын үед стрингтэй таарахгүй мөрийг хэвлэхийг хүсвэл –v гэж оруулна:
* grep -v “ 200 “ /var/log/httpd/access_log* Show lines without “ 200 “
Тэмдэглэл : ps ийн гаралтыг grep д оруулах үед grep процессийн гаралтуудыг гаргах бяцхан арга.
* ps auwx | grep “[i]nit”

## Үгийн тоог wc коммандаар харах
Хайлт хийх үед мөрийн тоог мэдэх хэрэгтэй үе гардаг .wc комманд нь хүлээн авч буй мөрийн тоог тоолоход ашиглагдаж болно.Жишээ нь дорхи комманд нь  тухайн IP хаягаас хэр их apache log файл д хамаарах коммандын мөрийн тоог гаргана.

* grep 192.198.1.1 /var/log/httpd/access-log | wc –l

Wc коммандыг өөр байдлаар ашиглах боломжтой. Wc нь үндсэндээ файл дахи мөрийн,үгийн,byte ийн тоог хэвлэх юм.
* wc /var/log/*.log

## Гаралтыг ангилах
Энэ нь файлын агууламжийг болон коммандын гаралтыг ангилахад ашиглагддаг.Энэхүү жишээ нь нэрэндээ Kernel ийг агуулан суусан байгаа RPM пакэйжийн нэрсийг жагсаахад ашиглагдана.Мөн үр дүнг эхний үсгийн дарааллаар гаргадаг.
* dpkg-query -l | grep kernel | sort Sort in alphanumeric order
* dpkg-query -l | grep kernel | sort -r Sort in reverse alphanumeric order
Дараагийн жишээ нь процесуудыг санах ойн хэрэглээнээс хамаарч жагсаах.-k  тохиргоо нь сонгосон тухайн талбарт хайх юм.
* ps auwx | sort –r –k 4,4
Дараагийн комманд нь уншиж аюсан кэрнэл модулуудыг хэмжээгээр нь жагсаах юм. n тохиргоо нь 2 дахь талбарт стрингээр биш дугаараар хайхыг заана.

## Холбоос 
* Linux гэж юу вэ ??
* Линукс Юникс болон үйлдлийн систем МОН  
* Linux-ийн тухай MOH 
* Ubuntu гэж юу вэ EN
* linuxийн тухай 

__INDEX__
__NEWSECTIONLINK__
Ангилал:Линукс