Линуксийн суурь эхлүүлэх команд. Линукс дээр програмыг хэрхэн ажиллуулах вэ. Хүлээгдэж буй ажлуудыг устгаж байна

Даалгавар ба үйл явц

Линукс дээр ажилладаг аливаа програмыг дууддаг үйл явц. Олон үйлдэлт систем болох Линукс нь нэг буюу хэд хэдэн хэрэглэгчдэд хамаарах олон процессыг нэгэн зэрэг гүйцэтгэх боломжтой гэдгээрээ онцлог юм. Та командыг ашиглан одоо ажиллаж байгаа процессуудын жагсаалтыг харуулах боломжтой psжишээлбэл, дараах байдлаар:

/home/larry# ps PID TT STAT TIME COMMAND 24 3 S 0:03 (bash) 161 3 R 0:00 ps /home/larry#

Анхдагч байдлаар команд байдаг гэдгийг анхаарна уу psзөвхөн эхлүүлсэн хэрэглэгчдэд хамаарах процессуудын жагсаалтыг харуулдаг. Системд ажиллаж байгаа бүх процессыг үзэхийн тулд та тушаал өгөх хэрэгтэй ps -a . Процессын дугааруудЭхний баганад жагсаасан (процессын ID эсвэл PID) нь ажиллаж байгаа процесс бүрт системээс оноодог өвөрмөц тоонууд юм. COMMAND толгойтой сүүлчийн баганад ажиллаж байгаа командын нэрийг заана. Энэ тохиолдолд жагсаалт нь хэрэглэгч Ларри өөрөө эхлүүлсэн процессуудыг агуулдаг. Системд ажиллаж байгаа өөр олон процессууд байдаг, тэд бүрэн жагсаалттушаалаар харж болно ps-aux. Гэсэн хэдий ч Larry хэрэглэгчийн ажиллуулдаг командуудын дунд зөвхөн bash (хэрэглэгч larry-д зориулсан командын бүрхүүл) болон тушаал нь өөрөө байдаг. ps. Bash бүрхүүл нь тушаалтай зэрэгцэн ажиллаж байгааг харж болно ps. Хэрэглэгч командыг оруулах үед ps, bash shell үүнийг ажиллуулж эхэлсэн. Багийн дараа psажлаа дуусгасан (үйл явцын хүснэгтийг харуулав), удирдлага bash процесс руу буцна. Дараа нь bash shell prompt гарч ирэх ба шинэ командыг хүлээнэ.

Ажиллаж байгаа процессыг мөн нэрлэдэг даалгавар(ажил). Процесс ба даалгавар гэсэн нэр томьёо нь харилцан адилгүй хэрэглэгддэг. Гэсэн хэдий ч, ихэвчлэн үйл явцыг утга учир нь даалгавар гэж нэрлэдэг ажлын менежмент(ажлын хяналт). Ажлын хяналт нь хэрэглэгчдэд олон ажлын хооронд шилжих боломжийг олгодог тушаалын бүрхүүлийн функц юм.

Ихэнх тохиолдолд хэрэглэгчид зөвхөн нэг ажлыг гүйцэтгэх болно - энэ нь командын бүрхүүлд оруулсан сүүлчийн тушаал байх болно. Гэсэн хэдий ч олон бүрхүүлүүд (bash болон tcsh гэх мэт) функцтэй байдаг ажлын менежмент(ажлын хяналт), хэд хэдэн тушаалыг нэгэн зэрэг ажиллуулах боломжийг танд олгоно даалгавар(ажлын байр) ба шаардлагатай бол тэдгээрийн хооронд шилжих.

Жишээлбэл, хэрэв та том засварлаж байгаа бол ажлын менежмент ашигтай байж болно текст файлмөн өөр үйлдэл хийхийн тулд засварлах ажлыг түр зогсоохыг хүсэж байна. Та засварлагчийг түр орхих, бүрхүүлийн сануулга руу буцах болон бусад үйлдлийг гүйцэтгэхийн тулд ажлын удирдлагын функцуудыг ашиглаж болно. Тэдгээрийг хийж дууссаны дараа та засварлагчтай ажиллахад буцаж очоод, түүнийг үлдсэн төлөвт нь олж болно. Ажлын удирдлагын функцэд илүү олон ашигтай хэрэглээ бий.

Урд болон дэвсгэр горим

Даалгаврууд нь аль аль нь байж болно урд тал(урд талд), эсвэл дэвсгэр(арын дэвсгэр). Ямар ч үед эхний ээлжинд зөвхөн нэг даалгавар байж болно. Эхний даалгавар бол таны харилцаж буй ажил юм; энэ нь гарнаас оролтыг хүлээн авч, гаралтыг дэлгэц рүү илгээдэг (мэдээжийн хэрэг та оролт эсвэл гаралтыг өөр газар чиглүүлээгүй бол). эсрэг, суурь ажилтерминалаас оролт хүлээн авахгүй байх; Ерөнхийдөө ийм ажил нь хэрэглэгчийн харилцан үйлчлэлийг шаарддаггүй.

Зарим даалгавруудыг гүйцэтгэхэд маш удаан хугацаа шаардагддаг бөгөөд гүйж байх үед сонирхолтой зүйл тохиолддоггүй. Ийм ажлуудын нэг жишээ бол програмыг эмхэтгэх, мөн том файлуудыг шахах явдал юм. Дэлгэц ширтээд эдгээр ажлыг дуусгахыг хүлээх ямар ч шалтгаан байхгүй. Ийм ажилд оруулах хэрэгтэй дэвсгэр. Энэ хугацаанд та бусад програмуудтай ажиллах боломжтой.

Линукс дээрх процессуудын гүйцэтгэлийг хянахын тулд дамжуулах механизмыг хангасан болно дохио. Сигнал нь системийг ашиглан стандарт богино мессежийг шууд солилцох процессуудын чадвар юм. Сигналын мессеж нь дохионы дугаараас бусад мэдээллийг агуулаагүй (хялбар байхын тулд дугаарын оронд системээс урьдчилан тодорхойлсон нэрийг ашиглаж болно). Дохио дамжуулахын тулд процесс зөвхөн системийн дуудлагыг ашиглахад л хангалттай алах(), дохиог хүлээн авахын тулд танд юу ч хэрэггүй. Хэрэв процесс ямар нэгэн тусгай арга замаар дохионд хариу өгөх шаардлагатай бол түүнийг бүртгэж болно зохицуулагч, хэрэв зохицуулагч байхгүй бол систем үүнд хариу үйлдэл үзүүлэх болно. Ерөнхийдөө энэ нь дохиог хүлээн авсан процессыг шууд зогсооход хүргэдэг. Дохио зохицуулагч ажиллаж эхэлнэ асинхрон, дохиог хүлээн авмагц тухайн үед ямар процесс явагдаж байгаа нь хамаагүй.

Хоёр дохио - дугаар 9 ( АЛ) ба 19 ( ЗОГС) - системээр үргэлж боловсруулдаг. Тэдгээрийн эхнийх нь үйл явцыг бүрэн устгахын тулд шаардлагатай (тиймээс нэр). Дохио ЗОГС түр зогсоодог процесс: энэ төлөвт процесс процессын хүснэгтээс хасагдаагүй боловч 18-р дохиог хүлээн авах хүртэл ажиллахгүй. ҮРГЭЛЖЛЭЛ) - үүний дараа энэ нь үргэлжлүүлэн ажиллах болно. Линукс командын бүрхүүлд дохио ЗОГСзугтах дарааллыг ашиглан идэвхтэй процесс руу дамжуулж болно Ctrl -З .

Дохионы дугаар 15 ( ХУГАЦАА) ажлыг тасалдуулахад үйлчилдэг. At тасалдал(тасалдах) ажлын үйл явц үхдэг. Ажил нь ихэвчлэн зугтах дарааллаар тасалддаг Ctrl -C. Тасалдсан ажлыг сэргээх арга байхгүй. Зарим програмууд дохиог тасалдаг гэдгийг та бас мэдэж байх ёстой ХУГАЦАА(хариуцагч ашиглан), ингэснээр товчлуурын хослолыг дарна Ctrl -C(o) үйл явцыг шууд зогсоож болохгүй. Хөтөлбөрийг дуусгахаас өмнө ажлын ул мөрийг устгахын тулд үүнийг хийдэг. Практикт зарим хөтөлбөрийг ийм байдлаар тасалдуулах боломжгүй юм.

Арын дэвсгэр рүү шилжүүлж, ажлын байрыг устгаж байна

-ээс эхэлье энгийн жишээ. Эхлээд харахад хэрэггүй мэт санагдах тийм гэсэн командыг харцгаая. Энэ тушаал нь y тэмдэгтээс бүрдэх төгсгөлгүй мөрүүдийг стандарт гаралт руу илгээдэг. Энэ тушаал хэрхэн ажилладагийг харцгаая:

/home/larry# тиймээ y y y y

Ийм мөрүүдийн дараалал хязгааргүй үргэлжлэх болно. Та энэ үйл явцыг тасалдлын дохиог илгээж, өөрөөр хэлбэл дарж устгаж болно Ctrl -C. Одоо бүх зүйлийг өөрөөр хийцгээе. Энэхүү төгсгөлгүй дарааллыг дэлгэцэн дээр харуулахгүйн тулд бид yes командын стандарт гаралтыг /dev/null руу дахин чиглүүлэх болно. Та мэдэж байгаачлан /dev/null төхөөрөмж нь "хар нүх"-ийн үүрэг гүйцэтгэдэг: энэ төхөөрөмж рүү илгээсэн бүх өгөгдөл алга болно. Энэ төхөөрөмжийг ашиглах нь зарим програмын хэт их гаралтыг арилгахад маш тохиромжтой.

/home/larry# тийм > /dev/null

Одоо дэлгэцэн дээр юу ч харагдахгүй байна. Гэсэн хэдий ч бүрхүүлийн сануулга мөн буцаж ирдэггүй. Учир нь yes команд ажиллаж байгаа бөгөөд y үсгүүдээс бүрдсэн мессежээ /dev/null руу илгээдэг. Та мөн энэ ажлыг тасалдлын дохио илгээснээр устгаж болно.

Одоо та yes командыг үргэлжлүүлэн ажиллуулахыг хүсэж байна гэж бодъё, гэхдээ бусад програмуудтай ажиллах боломжтой байхын тулд бүрхүүлийн хүсэлтийг дэлгэц рүү буцаана уу. Үүнийг хийхийн тулд та тийм гэсэн командыг арын дэвсгэр дээр тавьж болох бөгөөд энэ нь тантай харилцахгүйгээр ажиллах болно.

Процессыг арын дэвсгэр рүү оруулах нэг арга бол командын төгсгөлд & тэмдэг нэмэх явдал юм. Жишээ:

/home/larry# тийм > /dev/null & + 164 /home/larry#

Зурвас нь ажлын дугаар(ажлын дугаар) процессын хувьд тийм. Командын бүрхүүл нь ажиллуулж буй ажил бүрт ажлын дугаар өгдөг. Тийм гэдэг нь гүйцэтгэх боломжтой цорын ганц ажил тул түүнд 1 гэсэн дугаар өгөгдсөн. 164 тоо нь энэ процесстой холбоотой таних дугаар (PID) бөгөөд энэ дугаарыг мөн системээс процесст өгдөг. Бид дараа нь харах болно, эдгээр хоёр дугаарыг зааж өгснөөр процесст хандаж болно.

Тиймээс одоо бид /dev/null төхөөрөмж рүү y-ийн урсгалыг тасралтгүй илгээж, цаана нь тийм процесс ажиллаж байна. Энэ процессын статусыг мэдэхийн тулд та тушаалыг гүйцэтгэх хэрэгтэй ажлын байр, энэ нь бүрхүүлийн дотоод тушаал юм.

/home/larry# jobs + Ажиллаж байна тийм >/dev/null & /home/larry#

Энэ програм үнэхээр ажиллаж байгааг бид харж байна. Даалгаврын статусыг мэдэхийн тулд та тушаалыг ашиглаж болно ps, дээр үзүүлсэн шиг.

Процесс руу дохио дамжуулахын тулд (ихэнхдээ шаардлагатай байдаг таслахажлын ажил) хэрэглүүрийг ашиглаж байна алах. Энэ тушаалд аргумент болгон ажлын дугаар эсвэл PID өгөгдсөн. Нэмэлт параметр нь процесс руу илгээх шаардлагатай дохионы дугаар юм. Анхдагч байдлаар дохиог илгээдэг ХУГАЦАА. Дээрх тохиолдолд ажлын дугаар 1 байсан тул тушаал алах % 1ажлыг тасалдуулах болно. Ажилд өөрийн дугаараар хандах үед (PID биш) тухайн дугаарын өмнө тушаалын мөрөнд хувийн тэмдэг (“%)” байх ёстой.

Одоо тушаалаа оруулъя ажлын байрөмнөх үйлдлийн үр дүнг шалгахын тулд дахин:

/home/larry# ажил дуусгавар болсон тиймээ >/dev/null

Үнэн хэрэгтээ ажил устгагдсан бөгөөд дараагийн удаа та jobs командыг оруулахад дэлгэц дээр энэ талаар ямар ч мэдээлэл байхгүй болно.

Та мөн процессийн таних дугаар (PID) ашиглан ажлыг алж болно. Энэ дугаарыг ажлын байрны таних дугаарын хамт ажил эхлэх үед зааж өгнө. Бидний жишээн дээр PID утга нь 164 байсан тул тушаал 164 алахтушаалтай тэнцэх болно алах % 1. PID-г kill командын аргумент болгон ашиглахдаа "%" тэмдэгт оруулах шаардлагагүй.

Ажлыг түр зогсоож, үргэлжлүүлж байна

Өмнө нь хийж байсанчлан, эхний ээлжинд "yes" командыг ашиглан үйл явцыг эхлүүлье.

/home/larry# тийм > /dev/null

Өмнөх шиг, процесс урд талд явагдаж байгаа тул бүрхүүлийн сануулга дэлгэц рүү буцаж ирдэггүй.

Одоо товчлуурын хослолоор ажлыг тасалдуулахын оронд Ctrl -C, даалгавар боломжтой түр зогсоох(түдгэлзүүлэх, шууд утгаараа - түдгэлзүүлэх), түүнд дохио илгээх ЗОГС. Даалгаврыг түр зогсоохын тулд та тохирох товчлуурын хослолыг дарах хэрэгтэй, ихэвчлэн энэ Ctrl -З .

/home/larry# тийм > /dev/null Ctrl -З+ Зогссон тийм >>/dev/null /home/larry#

Түдгэлзүүлсэн процесс зүгээр л хэрэгжихгүй. Энэ нь процессорын нөөцийг ашигладаггүй. Түдгэлзүүлсэн ажлыг түр зогсоогоогүйтэй ижил цэгээс эхлүүлж болно.

Урд талд ажиллаж байгаа ажлыг үргэлжлүүлэхийн тулд та тушаалыг ашиглаж болно fg(урд талын - урд талын үгнээс).

/home/larry# fg тийм >/dev/null

Тушаалын бүрхүүл нь командын нэрийг дахин харуулах бөгөөд ингэснээр хэрэглэгч ямар үүрэг гүйцэтгэж байгаагаа мэдэх болно. Энэ мөчтэргүүн эгнээнд эхлүүлсэн. Товчлуур дээр дарж энэ ажлыг дахин түр зогсооё Ctrl -З, гэхдээ энэ удаад командаар арын дэвсгэр рүү ажиллуулъя bg(фон гэдэг үгнээс - дэвсгэр). Энэ нь процессыг төгсгөлд нь & тэмдэгтэй команд ашиглан ажиллуулсан мэт ажиллуулахад хүргэнэ (өмнөх хэсэгт хийсэн шиг):

/home/larry# bg + тийм $>$/dev/null & /home/larry#

Бүрхүүлийн сануулга буцаж байна. Одоо баг ажлын байрүйл явц гэдгийг харуулах ёстой тиймээяг одоо ажиллаж байна; Энэ процессыг тушаалаар устгаж болно алах, өмнө нь хийж байсан шиг.

Та далд ажиллаж байгаа ажлыг түр зогсоохын тулд гарын товчлолыг ашиглах боломжгүй Ctrl -З. Ажлыг түр зогсоохын өмнө командын тусламжтайгаар эхний ээлжинд гаргах ёстой fgтэгээд л больчих. Тиймээс тушаал fgтүр зогсоосон эсвэл далд ажиллаж байгаа ажилд хэрэглэж болно.

Арын ажил болон түр зогсоосон ажлын хооронд маш их ялгаа бий. Түдгэлзүүлсэн даалгавар ажиллахгүй - үүнд мөнгө зарцуулдаггүй тооцоолох хүчпроцессор. Энэ ажил ямар ч үйлдэл хийдэггүй. Түдгэлзүүлсэн ажил нь тодорхой хэмжээний компьютерийн RAM-ыг эзэлдэг бөгөөд хэсэг хугацааны дараа цөм санах ойн энэ хэсгийг шахах болно. HDD « poste restante" Үүний эсрэгээр, суурь ажил ажиллаж, санах ой ашиглаж, таны хийхийг хүссэн зарим зүйлийг хийж байгаа ч та бусад программ дээр нэгэн зэрэг ажиллаж байж магадгүй юм.

Цаана ажиллаж байгаа ажлууд нь дэлгэцэн дээр зарим текстийг харуулахыг оролдож болно. Энэ нь бусад ажил дээр ажиллахад саад болно.

/гэр/ларри# тийм &

Энд стандарт гаралтыг /dev/null төхөөрөмж рүү дахин чиглүүлээгүй тул y тэмдэгтийн төгсгөлгүй урсгалыг дэлгэцэн дээр хэвлэх болно. Товчлуурын хослол учир энэ хэлхээг зогсоох боломжгүй Ctrl -Cарын ажлын байранд нөлөөлөхгүй. Энэ гаралтыг зогсоохын тулд та тушаалыг ашиглах хэрэгтэй fg, энэ нь даалгаврыг тэргүүн эгнээнд гаргаж, дараа нь товчлуурын хослолоор даалгаврыг устгах болно Ctrl -C .

Дахиад нэг тайлбар хэлье. Ихэвчлэн багаар fgболон баг bgхамгийн сүүлд түр зогсоосон ажлуудад нөлөөлөх (хэрэв та тушаалыг оруулбал эдгээр ажлыг ажлын дугаарын хажууд + тэмдэгээр тэмдэглэнэ. ажлын байр). Хэрэв нэг буюу хэд хэдэн ажил нэгэн зэрэг ажиллаж байгаа бол тушаалуудыг аргумент болгон зааж өгснөөр ажлыг урд эсвэл арын хэсэгт байрлуулж болно. fgэсвэл тушаалууд bgтэдний таних дугаар (ажлын ID). Жишээлбэл, тушаал fg %2ажлын дугаар 2-ыг урд болон тушаалд тавьдаг bg %3 3-р ажлыг цаана нь тавьдаг. PID-г тушаалын аргумент болгон ашигла fgТэгээд bgэнэ нь хориотой.

Түүгээр ч барахгүй ажлыг тэргүүн эгнээнд гаргахын тулд та зүгээр л дугаарыг нь зааж өгч болно. Тиймээ, баг %2 тушаалтай тэнцэх болно fg %2 .

Ажлын хяналтын функц нь бүрхүүлд хамаардаг гэдгийг санах нь чухал юм. Багууд fg , bgТэгээд ажлын байрбайна дотоод багуудхясаа. Хэрэв та ямар нэг шалтгааны улмаас ажлын удирдлагын функцийг дэмждэггүй тушаалын бүрхүүл ашиглаж байгаа бол эдгээр (болон үүнтэй төстэй) тушаалуудыг олохгүй.

Линукс дээр ажилладаг серверийг удирдах нь ихэвчлэн терминалын цонхон дээрх тушаалуудыг олон удаа өөрчлөх замаар дагалддаг. Энэ нь Линукс дээр серверүүдийг удирддаг хүмүүст танил зураг бөгөөд зарим тохиолдолд далд тушаалуудыг ажиллуулахад тохиромжтой байдаг. Үүнийг практикт сайн ашиглаж болох бөгөөд энэ нь яагаад ашигтай байж болох шалтгааныг тэмдэглэх нь зүйтэй.
— Терминал нь олон тооны мессежээр ачаалал ихтэй, зэрэгцээ нэмэлт үйлдлүүдийг хийх боломжгүй үед;
— Хэрэв та терминалыг хаавал одоогийн процесс болон түүний үндсэн процессууд зогсох;
Эдгээр асуудлыг энгийнээр шийдэж болох бөгөөд энгийн үгээр хэлбэл бид ажиллаж байгаа процессыг хяналтын терминалаас бүрэн салгах хэрэгтэй.

Энэ нийтлэлд бид Linux-ийн арын дэвсгэр дээр тушаалуудыг ажиллуулах ашигтай чадварыг авч үзэх болно. Өөрөөр хэлбэл, таны эхлүүлсэн процессыг хяналтын терминалаас тусад нь гүйцэтгэх болно.

Ар талд команд эсвэл процессыг хэрхэн ажиллуулах вэ
Хэрэв таны процесс терминалын цонхонд ажиллаж байгаа бол командыг ашиглан түр зогсоож болно Ctrl+Z, магадгүй олон хүн үүнийг мэддэг, бодох байх, тэгвэл яах вэ. Сонирхолтой нь энэ процессыг түр зогсоосны дараа бид үүнийг арын дэвсгэр дээр үргэлжлүүлж болно, үүнийг хийхийн тулд бид командыг оруулах хэрэгтэй.

Энэ командыг оруулсны дараа процесс үргэлжлэх боловч цаана нь. Ар талд ажиллаж байгаа бүх процессыг үзэхийн тулд та тушаалыг оруулж болно

Үүнийг хэрхэн ашиглаж болох энгийн жишээг харцгаая. Бидэнд задлах хэрэгтэй, гэхдээ хүлээх цаг байхгүй, бид зэрэгцээ ажиллахыг хүсч байна гэж бодъё.

Архивыг арын дэвсгэр дээр задалж байна

$ tar -czf home.tar.gz .

дарна уу Cntr+Z, дараа нь тушаалуудыг оруулна уу

$bg$ ажил

Хоёрдахь арга бол командын төгсгөлд & тэмдэг нэмэх бөгөөд энэ нь системд тушаалыг далд ажиллуулахыг хэлэх болно.

$ tar -czf home.tar.gz . &$ажлын байр

Энэ арга нь процессуудыг далд ажиллуулах боломжийг олгодог боловч STDIN, STDOUT, STDERRтерминалд холбогдсон хэвээр байна. Одоо терминал хаалттай байсан ч процесс ажиллаж байгаа эсэхийг шалгацгаая.

Терминал цонхыг хаасны дараа процессыг гүйцэтгэж байна
Терминал цонхыг хаасны дараа ч процессыг үргэлжлүүлэхийн тулд бид тушаалыг ашиглаж болно үгүйсгэх. Энэ нь процессыг терминалын цонхны бүрхүүлээс "салгах" бөгөөд дараа нь консолын цонх хаагдсаны дараа ч гүйцэтгэгдэх болно.
Стандарт командыг ашиглах жишээг харцгаая rsync, үүнийг арын дэвсгэр дээр ажиллуулж, процессыг терминалаас салгаж үзье.

$ sudo rsync загварууд/* /var/www/html/ & $ ажил $ disown -h %1 $ ажил

Та мөн тушаалыг ашиглаж болно үгүй ээ, энэ нь хэрэглэгч системийн бүрхүүлээс гарсан ч процессыг үргэлжлүүлэх боломжийг олгоно.

$ nohup tar -czf iso.tar.gz Templates/* & $ jobs

Линукс хяналтын терминалаас процессыг хэрхэн салгах вэ
Процессыг хяналтын терминалаас бүрэн салгахын тулд та график хэрэглэгчийн интерфэйс (GUI), жишээлбэл, Firefox хөтөч ашиглах үед үр дүнтэй байх командыг ашиглаж болно.

$ firefox/dev/null &

IN Линукс систем(ба бараг бүх Unix системүүд дээр) /dev/null нь тусгай төхөөрөмжийн файл бөгөөд үүнийг "null төхөөрөмж" гэж нэрлэдэг. Түүнд бичих нь бичигдсэн мэдээллийн хэмжээнээс үл хамааран амжилттай явагддаг бөгөөд үүнээс унших нь файлын төгсгөлийг (EOF) уншихтай тэнцэнэ.

Хамгийн сүүлд бид bash скрипт, файлын тодорхойлогч, урсгалыг дахин чиглүүлэх зэрэгт оролт, гаралт, алдааны урсгалтай ажиллах талаар ярилцсан. Одоо та өөрөө ямар нэгэн зүйл бичих хангалттай мэдлэгтэй болсон. Bash-ийг эзэмших энэ үе шатанд ажиллаж байгаа скриптүүдийг хэрхэн удирдах, тэдгээрийг хэрхэн автоматжуулах талаар асуулт гарч ирж магадгүй юм.

Одоогийн байдлаар бид командын мөрөнд скриптийн нэрийг бичиж, Enter товчийг дарж байгаа бөгөөд энэ нь програмуудыг шууд ажиллуулахад хүргэдэг боловч энэ нь тийм биш юм. цорын ганц арга замскриптүүдийг дуудах. Өнөөдөр бид скрипт нь Линукс дохиотой хэрхэн ажиллах талаар, скрипт ажиллуулах, ажиллуулах явцад тэдгээрийг удирдах өөр өөр аргуудын талаар ярих болно.

Линукс дохио

Линукс дээр систем эсвэл програмаар үүсгэгддэг 30 гаруй дохио байдаг. Скрипт боловсруулахад хэрэг болох нь дамжиггүй хамгийн түгээмэл хэрэглэгддэг жагсаалтыг энд оруулав тушаалын мөр.
Дохионы код
Нэр
Тодорхойлолт
1
САЙХУП
Терминал хаах
2
SIGINT
Хэрэглэгчийн процессыг терминалаас зогсоох дохио (CTRL + C)
3
SIGQUIT
Терминалаас (CTRL + \) санах ойн хаягдал бүхий хэрэглэгчийн үйл явцыг зогсоох дохио
9
SIGKILL
Үйл явцыг болзолгүйгээр зогсоох
15
SIGTERM
Процессыг зогсоох хүсэлтийн дохио
17
SIGSTOP
Үйл явцыг түдгэлзүүлэхийг албадах боловч зогсоохгүй байх
18
SIGTSTP
Терминалаас процессыг түр зогсоож байна (CTRL+Z) гэхдээ унтрахгүй
19
SIGCONT
Өмнө нь зогсоосон процессыг үргэлжлүүлэн гүйцэтгэх

Хэрэв та терминалыг хаах үед bash бүрхүүл SIGHUP дохиог хүлээн авбал энэ нь гарна. Гарахаасаа өмнө энэ нь ажиллаж байгаа скриптүүд гэх мэт бүх процессуудад SIGHUP дохио илгээдэг.

SIGINT дохио нь ажиллагааг түр зогсооход хүргэдэг. Линуксийн цөм нь процессорын цагийг бүрхүүлд хуваарилахаа больдог. Ийм зүйл тохиолдоход бүрхүүл нь SIGINT дохиог илгээж процессуудад мэдэгддэг.

Bash скриптүүд нь эдгээр дохиог хянадаггүй ч дохионоос үүдэлтэй үр дагаварт скриптийг бэлтгэхийн тулд тэдгээрийг таньж, тодорхой тушаалуудыг гүйцэтгэх боломжтой.

Скриптүүд рүү дохио илгээх

Bash бүрхүүл нь гарын товчлолыг ашиглан скриптүүд рүү дохио илгээх боломжийг олгодог. Хэрэв та ажиллаж байгаа скриптийг түр зогсоох эсвэл үйл ажиллагааг нь зогсоох шаардлагатай бол энэ нь маш хэрэгтэй болно.

Үйл явцыг дуусгавар болгож байна

Хослол CTRL товчлуурууд+C нь SIGINT дохиог үүсгэж, бүрхүүлд ажиллаж байгаа бүх процесс руу илгээж, тэдгээрийг зогсооход хүргэдэг.

Бүрхүүлд дараах тушаалыг ажиллуулъя:

$унтах 100
Үүний дараа бид CTRL + C товчлуурын хослолоор ажлаа дуусгана.


Процессыг гараас дуусгах

Үйл явцыг түр зогсоох

CTRL + Z товчлуурын хослол нь SIGTSTP дохиог үүсгэдэг бөгөөд энэ нь процессыг түр зогсоодог боловч үүнийг зогсоодоггүй. Ийм үйл явц нь санах ойд үлдэж, түүний ажлыг үргэлжлүүлж болно. Бүрхүүлд тушаалыг ажиллуулъя:

$унтах 100
CTRL + Z товчлуурын хослолоор үүнийг түр зогсооно уу.


Процессыг түр зогсоо

Дөрвөлжин хаалтанд байгаа тоо нь бүрхүүлийн процесст хуваарилдаг ажлын дугаар юм. Бүрхүүл нь дотор нь ажиллаж байгаа процессуудыг өвөрмөц тоо бүхий ажил гэж үздэг. Эхний процесст 1 дугаар, хоёр дахь нь 2, гэх мэтээр оноогдсон.

Хэрэв та бүрхүүлд холбогдсон ажлыг түр зогсоож, түүнээс гарахыг оролдвол bash анхааруулга өгөх болно.

Та түр зогсоосон ажлуудыг дараах тушаалаар харж болно.

Ps –l


Ажлын жагсаалт

Процессын төлөвийг харуулсан S баганад түр зогсоосон процессуудын хувьд T харагдана. Энэ нь командыг түдгэлзүүлсэн эсвэл ул мөрийн төлөвт байгааг харуулж байна.

Хэрэв та түр зогсоосон процессыг зогсоох шаардлагатай бол kill командыг ашиглаж болно. Та энэ талаар дэлгэрэнгүй уншиж болно.

Түүний дуудлага дараах байдалтай байна.

Процессын ID-г устгана уу

Дохио таслах

Скрипт дээр Линукс дохиог хянахыг идэвхжүүлэхийн тулд trap командыг ашиглана уу. Хэрэв скрипт нь энэ командыг дуудах үед заасан дохиог хүлээн авбал түүнийг бие даан боловсруулдаг бол бүрхүүл нь ийм дохиог боловсруулахгүй.

Trap команд нь скриптийг бүрхүүлийн оролцоогүйгээр боловсруулах дохионд хариу өгөх боломжийг олгодог.

Trap команд нь гүйцэтгэх код болон бидний таслахыг хүссэн дохионуудын жагсаалтыг зайгаар тусгаарлаж байгааг харуулсан жишээг харцгаая. Энэ тохиолдолд энэ нь зөвхөн нэг дохио юм:

#!/bin/bash trap "echo " Trapped Ctrl-C"" SIGINT echo Энэ бол туршилтын скриптийн тоо=1 бөгөөд [ $count -le 10 ] "Loop #$count" унтсан 1 тоо=$(($) тоо + 1)) дууссан
Энэ жишээнд ашигласан trap команд гарна Текст зурвас SIGINT дохиог илрүүлэх бүрт гар дээрх Ctrl + C товчлуурыг дарж үүсгэж болно.


Дохио таслах

Таныг CTRL + C товчлуурыг дарах бүрт скрипт нь бүрхүүлийг дуусгахын оронд trace-г дуудах үед заасан echo командыг гүйцэтгэдэг.

Та trap командыг дуудахдаа EXIT дохионы нэрийг ашиглан скриптээс гарах дохиог таслан зогсоож болно.

#!/bin/bash trap "echo Goodbye..." EXIT count=1 байхад [ $count -le 5 ] do echo "Loop #$count" унтаж 1 count=$(($count + 1)) дууссан


Скриптээс гарах дохиог тасалж байна

Скрипт хэвийн эсвэл SIGINT дохионы улмаас гарах үед бүрхүүл нь echo командыг таслан зогсоож гүйцэтгэнэ.

Таслагдсан дохиог өөрчлөх, таслах ажиллагааг цуцлах

Скриптээр тасалдсан дохиог өөрчлөхийн тулд та trap командыг шинэ параметрээр ажиллуулж болно:

#!/bin/bash trap "echo "Ctrl-C баригдсан."" SIGINT count=1 байхад [ $count -le 5 ] "Loop #$count" унтах 1 count=$(($count + 1) ) хийсэн trap "echo "Би хавхыг өөрчилсөн!"" SIGINT тоо=1 байхад [ $count -le 5 ] "Хоёр дахь давталт #$тоол" унтсан 1 тоо =$(($тоол + 1)) дууслаа


Дохио таслах өөрчлөлт

Өөрчлөлт хийсний дараа дохиог шинэ аргаар боловсруулах болно.

Захиалах командыг гүйцэтгэж, түүнд давхар зураас болон дохионы нэрийг өгснөөр дохио таслах ажиллагааг цуцалж болно.

#!/bin/bash trap "echo "Ctrl-C баригдсан."" SIGINT count=1 байхад [ $count -le 5 ] "Loop #$count" унтах 1 count=$(($count + 1) ) хийсэн занга -- SIGINT echo "Би зүгээр л хавхыг арилгалаа" count=1 байхад [ $count -le 5 ] "Second Loop #$count" унтлаа 1 count=$(($count + 1)) хийгдсэн
Хэрэв скрипт нь тасалдал цуцлагдахаас өмнө дохио хүлээн авбал үүнийг заасны дагуу боловсруулна одоогийн багурхи. Скриптийг ажиллуулцгаая:

$./myscript
Мөн гар дээрх CTRL + C товчийг дарна уу.


Тасалгааг цуцлахаас өмнө дохиог тасалсан.

CTRL + C товчлуурын эхний товчлуурыг дарах нь скриптийг гүйцэтгэх үед дохио таслах ажиллагаа ажиллаж байх үед тохиолдсон тул скрипт нь дохионд өгсөн цуурай командыг гүйцэтгэсэн. Гүйцэтгэл unhook тушаалд хүрсний дараа CTRL + C команд нь ердийнхөөрөө ажиллаж, скриптийг зогсоосон.

Ар талд командын мөрийн скриптүүдийг ажиллуулж байна

Заримдаа bash скриптүүд даалгавраа дуусгахад удаан хугацаа шаардагддаг. Гэсэн хэдий ч та скрипт дуусахыг хүлээхгүйгээр командын мөрөнд хэвийн ажиллах чадвартай байх шаардлагатай байж магадгүй юм. Үүнийг хэрэгжүүлэхэд тийм ч хэцүү биш.

Хэрэв та ps командын гаралтын процессуудын жагсаалтыг харсан бол терминалд холбогдоогүй, далд ажиллаж байгаа процессуудыг анзаарсан байх.
Дараах скриптийг бичье.

#!/bin/bash count=1 байхад [ $count -le 10 ] унтсан 1 тоо=$((($count + 1)) дууссан
Нэрийн ард (&) тэмдэгтийг зааж өгч ажиллуулъя:

$./myscipt &
Энэ нь үүнийг суурь процесс болгон ажиллуулахад хүргэнэ.


Скриптийг арын дэвсгэр дээр ажиллуулж байна

Скрипт нь арын процессоор нээгдэх бөгөөд түүний танигч нь терминал дээр гарч ирэх бөгөөд гүйцэтгэл дуусахад та энэ тухай мессежийг харах болно.

Хэдийгээр скрипт нь далд ажиллаж байгаа ч STDOUT болон STDERR руу мессеж гаргахын тулд терминалыг үргэлжлүүлэн ашигладаг бөгөөд энэ нь түүний гаргаж буй текст эсвэл алдааны мэдэгдлүүд терминал дээр харагдах болно гэдгийг анхаарна уу.


Процессуудын жагсаалт

Энэ аргын тусламжтайгаар хэрэв та терминалаас гарвал ард ажиллаж байгаа скрипт мөн гарах болно.

Хэрэв та терминалыг хаасны дараа скриптийг үргэлжлүүлэн ажиллуулахыг хүсвэл яах вэ?

Терминалыг хаах үед гарахгүй скриптүүдийг ажиллуулж байна

Терминал сессээс гарсны дараа ч скриптүүдийг арын процесст ажиллуулж болно. Үүнийг хийхийн тулд та nohup командыг ашиглаж болно. Энэ команд нь процесс руу илгээсэн SIGHUP дохиог хаах замаар програмыг ажиллуулах боломжийг олгодог. Үүний үр дүнд, процессыг эхлүүлсэн терминалаас гарахад ч гүйцэтгэх болно.

Скриптээ ажиллуулахдаа энэ техникийг ашиглацгаая:

Nohup ./myscript &
Энэ бол терминал руу гарах зүйл юм.


Хамт олигтойхон

nohup команд нь процессыг терминалаас салгадаг. Энэ нь процесс STDOUT болон STDERR-ийн лавлагааг алдах болно гэсэн үг юм. Скриптээр өгөгдлийн гаралтыг алдахгүйн тулд nohup нь STDOUT болон STDERR-д ирсэн мессежүүдийг nohup.out файл руу автоматаар дахин чиглүүлдэг.

Хэрэв та нэг директороос олон скрипт ажиллуулбал тэдгээрийн гаралт нь нэг nohup.out файлд дуусна гэдгийг анхаарна уу.

Даалгавруудыг харах

Ажлын команд нь бүрхүүлд ажиллаж байгаа одоогийн ажлуудыг харах боломжийг танд олгоно. Дараах скриптийг бичье.

#!/bin/bash count=1 байхад [ $count -le 10 ] do echo "Loop #$count" унтаж 10 count=$(($count + 1)) дууссан
Үүнийг ажиллуулцгаая:

$./myscript
CTRL + Z товчлуурын хослолоор үүнийг түр зогсооно уу.


Скриптийг ажиллуулж, түр зогсоож байна

Дэлгэц дээр юу ч харуулахгүйн тулд скриптийн гаралтыг файл руу дахин чиглүүлэхийн зэрэгцээ ижил скриптийг ард ажиллуулъя:

$ ./myscript > outfile &
Одоо ажлын тушаалыг гүйцэтгэх үед бид түр зогсоосон скрипт болон ард ажиллаж байгаа скриптийн талаарх мэдээллийг харах болно.


Скриптүүдийн талаар мэдээлэл авах

Ажлын командыг дуудах үед -l шилжүүлэгч нь бидэнд процессын ID-н талаарх мэдээлэл хэрэгтэй байгааг илтгэнэ.

Түр зогсоосон ажлыг дахин эхлүүлж байна

Скриптийг арын дэвсгэр дээр дахин эхлүүлэхийн тулд bg командыг ашиглаж болно.

Скриптийг ажиллуулцгаая:

$./myscript
CTRL + Z товчийг дарснаар түүний гүйцэтгэлийг түр зогсооно. Дараах тушаалыг ажиллуулцгаая.

$бг


bg тушаал

Скрипт одоо ард ажиллаж байна.

Хэрэв танд түр зогсоосон олон ажил байгаа бол тухайн ажлыг дахин эхлүүлэхийн тулд ажлын дугаарыг bg команд руу шилжүүлж болно.

Ажлаа дахин эхлүүлэхийн тулд энгийн горим fg командыг ашиглана уу:

Скриптүүдийг ажиллуулахаар төлөвлөж байна

Линукс нь тухайн үед bash скрипт ажиллуулах хэд хэдэн аргыг санал болгодог. Эдгээр нь at команд болон cron ажил төлөвлөгч юм.

at тушаал дараах байдалтай байна.

[-f файлын нэр] цагт
Энэ тушаал нь олон цагийн форматыг таньдаг.

  • Стандарт, цаг, минутыг зааж өгсөн, жишээлбэл - 10:15.
  • Үдээс өмнө эсвэл үдээс хойш AM/PM үзүүлэлтүүдийг ашиглах, жишээлбэл - 22:15.
  • Одоо , үд дунд , шөнө дунд гэх мэт тусгай нэрсийг ашиглах .
Ажил гүйцэтгэх цагийг зааж өгөхөөс гадна at тушаал нь дэмжигдсэн форматуудын аль нэгийг ашиглан огноог дамжуулж болно.
  • Огноог ААӨӨГӨӨ, СС/ӨГ/ЖЖ, эсвэл ӨГ.АА.ӨЖ загвар ашиглан бичдэг стандарт огнооны формат.
  • Огнооны текст дүрслэл, жишээ нь 7-р сарын 4 эсвэл 12-р сарын 25, оныг зааж өгөх боломжтой эсвэл үүнгүйгээр хийх боломжтой.
  • Одоогийнх шиг бичлэг хийх + 25 минут.
  • Бичлэгийг маргааш 22:15 цагаас үзнэ үү.
  • Бичлэгийн төрөл 10:15 + 7 хоног.
Энэ сэдвийг гүнзгийрүүлэхгүй, командыг ашиглах энгийн жишээг харцгаая.

$ at -f ./myscript одоо


at командыг ашиглан ажлын хуваарь гаргах

Дуудлага хийх үед -M шилжүүлэгч нь скриптийн гаралтыг илгээхэд ашиглагддаг цахим шуудан, хэрэв систем зохих ёсоор тохируулагдсан бол. Хэрэв илгээж байгаа бол имэйлболомжгүй, энэ шилжүүлэгч зүгээр л гаралтыг дарах болно.

Гүйцэтгэхийг хүлээж буй ажлын жагсаалтыг харахын тулд та atq командыг ашиглаж болно:


Хүлээгдэж буй ажлуудын жагсаалт

Хүлээгдэж буй ажлуудыг устгаж байна

atrm тушаал нь хүлээгдэж буй ажлыг устгах боломжийг танд олгоно. Үүнийг дуудахдаа ажлын дугаарыг зааж өгнө үү:

$atrm 18


Ажлыг устгаж байна

Скриптүүдийг хуваарийн дагуу ажиллуул

At командыг ашиглан скриптүүдээ нэг удаа ажиллуулахаар төлөвлөх нь олон нөхцөл байдалд амьдралыг хөнгөвчлөх болно. Гэхдээ скриптийг өдөр бүр, долоо хоногт нэг удаа, эсвэл сард нэг удаа гүйцэтгэх шаардлагатай бол яах вэ?

Линукс нь тогтмол ажиллуулах шаардлагатай скриптүүдийг төлөвлөх боломжийг олгодог crontab хэрэгсэлтэй.

Crontab нь далд ажилладаг бөгөөд cron хүснэгтүүд гэж нэрлэгддэг өгөгдөл дээр үндэслэн хуваарьт ажлуудыг гүйцэтгэдэг.

Одоо байгаа cron ажлын хүснэгтийг харахын тулд дараах тушаалыг ашиглана уу.

$ crontab –л
Скриптийг хуваарийн дагуу ажиллуулахаар төлөвлөхдөө crontab нь тухайн ажлыг хэзээ гүйцэтгэх шаардлагатай талаарх мэдээллийг дараах форматаар хүлээн авдаг.

Минут, цаг, сарын өдөр, сар, долоо хоногийн өдөр.
Жишээлбэл, хэрэв та тодорхой скрипт нэртэй командыг өдөр бүр 10:30 цагт гүйцэтгэхийг хүсвэл энэ нь даалгаврын хүснэгтийн дараах оруулгатай тохирно.

30 10 * * * тушаал
Энд сар, сар, долоо хоногийн өдөр талбарт хэрэглэгддэг "*" орлуулагч тэмдэг нь cron командыг сар бүрийн өдөр бүр 10:30 цагт ажиллуулах ёстойг харуулж байна.

Жишээлбэл, хэрэв та скриптийг даваа гараг бүрийн 16:30 цагт ажиллуулахыг хүсвэл даалгаврын хүснэгтэд дараах оруулгыг үүсгэх хэрэгтэй болно.

30 16 * * 1 тушаал
Долоо хоногийн өдрүүдийг дугаарлах нь 0-ээс эхэлдэг бөгөөд 0 нь Ням гараг, 6 нь Бямба гараг гэсэн үг юм. Өөр нэг жишээ энд байна. Энд тушаалыг сар бүрийн эхний өдрийн 12 цагт гүйцэтгэх болно.

00 12 1 * * тушаал
Саруудыг 1-ээс эхлэн дугаарлана.
Хүснэгтэд оруулга нэмэхийн тулд та crontab руу -e шилжүүлэгчээр залгах хэрэгтэй:

Crontab – e
Дараа нь та хуваарь үүсгэх командуудыг оруулж болно:

30 10 * * * /home/likegeeks/Desktop/myscript
Энэ командын ачаар скриптийг өдөр бүр 10:30 цагт дуудах болно. Хэрэв та "Нөөцийг түр хугацаагаар ашиглах боломжгүй" гэсэн алдаатай тулгарвал доорх тушаалыг root болгон ажиллуулна уу.

$ rm -f /var/run/crond.pid
Та хэд хэдэн тусгай санг ашиглан cron ашиглан скриптүүдийг үе үе эхлүүлэх ажлыг зохион байгуулж болно:

/etc/cron.hourly /etc/cron.daily /etc/cron.weekly /etc/cron.monthly
Тэдгээрийн аль нэгэнд нь скрипт файлыг байрлуулснаар цаг, өдөр, долоо хоног, сар бүр ажиллах болно.

Нэвтрэх болон бүрхүүл эхлүүлэх үед скриптүүдийг ажиллуул

Та хэрэглэгчийн нэвтрэлт эсвэл бүрхүүл ажиллуулах гэх мэт янз бүрийн үйл явдлууд дээр үндэслэн скриптүүдийг эхлүүлэхийг автоматжуулж болно. Та ийм нөхцөлд боловсруулагдсан файлуудын талаар уншиж болно. Жишээлбэл, эдгээр нь дараах файлууд юм.

$HOME/.bash_profile $HOME/.bash_login $HOME/.profile
Нэвтрэх үед скриптийг ажиллуулахын тулд дуудлагыг .bash_profile файлд оруулна уу.

Терминал нээх үед скрипт ажиллуулах талаар юу хэлэх вэ? Үүнийг зохион байгуулахад .bashrc файл туслах болно.

Үр дүн

Өнөөдөр менежменттэй холбоотой асуудлыг хэлэлцлээ амьдралын мөчлөгскриптүүд, бид скриптүүдийг арын дэвсгэр дээр хэрхэн ажиллуулах, тэдгээрийн гүйцэтгэлийг хэрхэн төлөвлөх талаар ярилцсан. Дараагийн удаа, bash скрипт дэх функцууд болон номын сангийн хөгжүүлэлтийн талаар уншина уу.

Эрхэм уншигчид! Та командын мөрийн скриптүүдийг хуваарийн дагуу ажиллуулахын тулд хэрэгслийг ашигладаг уу? Хэрэв тийм бол тэдний талаар бидэнд хэлээрэй.

Линукс терминалын үйлчилгээ нь анхдагчаар нэг даалгавартай горимд ажилладаг. Энэ нь хөөргөх ямар ч багийнхан терминалыг дуусгах хүртэл блоклодог гэсэн үг юм. Удаан ажиллах хугацаа шаарддаг програмуудыг ажиллуулахад энэ арга нь тохиромжгүй. Энэ асуудалЭнэ асуудлыг хоёр аргаар шийдэж болно: нэмэлт терминалын цонх нээж, дотор нь өөр командыг гүйцэтгэх эсвэл дэвсгэр горимыг ашиглах. Одоогийн бүх үйлдлийн системүүд, түүний дотор Линукс нь олон үйлдэлтэй бөгөөд энэ нь олон програмыг нэгэн зэрэг гүйцэтгэх чадвартай гэсэн үг юм.

Би командын мөрийн интерфэйс рүү нэн даруй хандахын тулд яаж ар талдаа бригадыг ажиллуулах вэ? Ажиллуулахаас өөр аргагүй болсон багийг арын процесс гэж нэрлэдэг. Дэлгэц дээр суурь процессууд харагдахгүй байна. Жишээлбэл, Apache HTTPD сервер нь веб хуудсуудад үйлчлэхийн тулд арын дэвсгэр дээр ажилладаг. Та бүрхүүлийн скрипт эсвэл дурын командыг бага ач холбогдолтой горимд оруулж болно. Даалгаврыг (жишээ нь, баг эсвэл скрипт) тушаалын мөрийн төгсгөлд "&" нэмснээр ард байрлуулж болно. Энэ мэдэгдэл нь командыг арын дэвсгэр дээр байрлуулж, терминал дахь зайг чөлөөлдөг. Цаана нь ажилладаг багийг ажил гэдэг. Арын команд ажиллаж байх үед бусад командуудыг гүйцэтгэх боломжтой. Синтакс нь дараах байдалтай байна.

тушаал & скрипт-нэр & /зам/тулд/команд arg1 arg2 & тушаал-1 | команд-2 arg1 & тушаал-1 | тушаал-2 -arg1 -arg2 >/зам/тулд/гаралт &

Терминалын цонхыг хаахгүйгээр програмуудыг арын дэвсгэр дээр ажиллуулахын тулд та тусгай "&" зааварлагчийг ашиглах ёстой. Командын нэр, сонголтууд болон оролтын параметрүүдийг зааж өгсний дараа энэ тэмдэгтийг мөрийн хамгийн төгсгөлд байрлуулна. IN ерөнхий үзэлЭнэ дарааллыг “command_name -option input_parameter &” гэж оруулж болно.

ls ~/* > ~/test-file.txt &
18960

Enter товчийг дарсны дараа програм автоматаар далд ажиллаж эхэлнэ. Энэ тохиолдолд терминал "[даалгаврын_тоо] процессын танигч" гэсэн агуулга бүхий мөрийг харуулах бөгөөд шинээр үүсгэсэн командыг оруулахыг танд сануулна.

Линукс дээр далд ажиллаж байгаа командуудыг олоорой

Дараах тушаалыг ажиллуулна уу:

Өгөгдлийн гаралтын жишээ:

Find ажиллаж байна / -iname "*.c" 2> /dev/null > /tmp/output.txt &
+ grep -R "hostNamed" / 2> /dev/null > /tmp/grep.txt &-г ажиллуулж байна

Захиалгын тодорхойлогч хаана байна.

Стандарт дамжуулалтаас гадна ажлын ID-н процессын ID-г харуулахын тулд -l сонголтыг дамжуулна уу:

Өгөгдлийн гаралтын жишээ:

7307 Ажиллаж байна find / -iname "*.c" 2> /dev/null > /tmp/output.txt &
+ 7324 grep -R "hostNamed" ажиллаж байна / 2> /dev/null > /tmp/grep.txt &

Зөвхөн процессын ID-г харуулахын тулд дараахыг оруулна уу:

Өгөгдлийн гаралтын жишээ:

Цаана ажиллаж байгаа командуудыг гүйцэтгэхээ зогсоо

Процессыг хүчээр эсвэл аятайхан зогсоохын тулд kill командыг ашиглана уу. Синтакс нь дараах байдалтай байна.

PID-г алах
алах -15 PID
алах -9 PID
killall процесс-Нэр-Энд
killall -15 процесс-Нэр-Энд
killall -9 процесс-Нэр-Энд

Линукс дээр програмыг урд талын горимд буцаах

Линукс нь зөвхөн программуудыг арын дэвсгэр дээр ажиллуулахаас гадна хэрэв хүсвэл тэдгээрийг хэвийн ажиллагаа руу буцаах боломжийг олгодог. Үүнд зориулсан хоёр хэрэгсэл байдаг: тушаал ( Баг гэдэг нь нийтлэг зорилго, ашиг сонирхлын дагуу нэгдсэн хүмүүсийн нэгдэл юм.) fg ба % оператор. Тэдний хүчин чармайлтын зарчим нь маш энгийн. fg нь ажлын дугаарыг параметр болгон зааж өгөхийг шаарддаг бөгөөд үүнийг операторын дараа нэн даруй % гэж хоосон зайгүйгээр орлуулах ёстой.

олох / -name .ini 2> ~/results.txt &
19090
fg 1
bash: fg: даалгавар дууссан
+ Гарах 1 олох / -name .ini 2> ~/results.txt

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

Хөтөлбөрийг эхлүүлэхийн өмнө бид эхлээд програм гэж юу болохыг ойлгох ёстой. Линукс дээр программууд нь бусад файлуудаас зөвхөн гүйцэтгэх боломжтой тугтай байдгаараа ялгаатай. Би энэ талаар аль хэдийн нийтлэлдээ дэлгэрэнгүй бичсэн тул дахин давтахгүй.

Бүх програмуудыг хэд хэдэн төрөлд хувааж болно:

  • Хоёртын програмууд- гүйцэтгэхэд бэлэн байгаа процессорын зааврыг агуулсан, ихэнх програмууд ийм форматтай байдаг, тэдгээр нь хурдан бөгөөд системээр шууд гүйцэтгэгддэг;
  • Байт код програмууд- эдгээр нь процессорын заавар байхаа больсон, гэхдээ тэдгээрийг гүйцэтгэх боломжтой тодорхой виртуал машины заавар; виртуал машингүйгээр ийм командыг гүйцэтгэх боломжгүй. Ийм программууд нь илүү их нөөц зарцуулдаг, гэхдээ маш хурдан байдаг, тэдний давуу тал нь хаана ч ажиллах боломжтой ямар ч өөрчлөлтгүйгээр гүйцэтгэх боломжтой юм. виртуал машин. Ийм программуудад Java программууд орно.
  • Скрипт програмууд- эдгээр программууд нь тусгай орчуулагчаар гүйцэтгэгддэг энгийн текстийн командуудын багцаас бүрдэнэ. Ийм программууд нь удаан боловч тэдгээрийг боловсруулахад хялбар бөгөөд кодыг нь амархан бөгөөд хурдан өөрчлөх боломжтой.

Одоо програмуудыг эхлүүлэх рүү шилжье.

Терминал дээр ажиллаж байгаа програмууд

Эхлээд мэс заслын өрөөнд Unix системүүдболон Линукс нь график интерфэйсгүй байсан тул программуудыг терминалын командуудыг ашиглан эхлүүлсэн. Одоо энэ нь бас боломжтой бөгөөд туршлагатай хэрэглэгчид нэлээд идэвхтэй ашиглаж байна. Програмыг эхлүүлэх синтакс дараах байдалтай байна.

/зам/хүрэх/файл/програмсонголтууд

Параметрүүд нь зөвхөн шаардлагатай үед тодорхойлогддог боловч бүрхүүл нь програмын бүрэн замыг үргэлж мэддэг байх ёстой. Програмын нэр болон зайны дараах бүх зүйл нь параметр юм. Хөтөлбөрийг гүйцэтгэхдээ бид ихэвчлэн бүрэн замыг зааж өгдөггүй гэдгийг та аль хэдийн анзаарсан байх. Энэ нь маш урт бөгөөд тохиромжгүй байх болно.

Хөгжүүлэгчид үүнийг шийдвэрлэх арга замыг санал болгов. /bin, /sbin, /usr/bin, /usr/sbin гэх мэт программууд ихэвчлэн байрладаг хавтсанд хүрэх бүх замыг хадгалдаг PATH хувьсагчийг үүсгэсэн. Та түүний агуулгыг дараах тушаалаар харж болно.

Програмын нэрийг бичихэд систем нь PATH-ийн бүх хавтсанд ийм нэртэй ажиллах боломжтой файлыг хайж олох бөгөөд хэрэв олсон бол түүнийг ажиллуулдаг. Хэрэв ийм файл байхгүй бол "команд олдсонгүй" гэсэн мессеж гарч ирнэ. Тиймээс системийн програмуудын аль нэгийг ажиллуулахын тулд түүний нэрийг бичихэд л хангалттай гүйцэтгэх боломжтой файл, Жишээлбэл:

Мөн та зайны дараа параметрүүдийг дамжуулж болно:

Програм нь эдгээр сангуудад байхгүй үед та түүнд хүрэх замыг бүрэн зааж өгөх хэрэгтэй.

/usr/local/bin/ls1

Хэрэв та програмыг дамжуулан ажиллуулахыг хүсвэл ubuntu терминал, одоогийн хавтсанд байгаа бол нөхцөл байдал арай өөр байх болно. Систем нь зөвхөн PATH хувьсагчийн фолдеруудыг хайдаг бөгөөд одоогийн лавлахаас хайдаггүй. Тиймээс, хэрэв та гүйцэтгэх файлын нэрийг бичвэл алдаа гарах болно. Та бүх замыг зааж өгөх хэрэгтэй, учир нь энэ нь байх болно./:

Заримдаа зарим нэг онцгой зүйлийг шилжүүлэх шаардлагатай болдог. Жишээ нь REDDOR хувьсагч нь аль болохыг заадаг текст засварлагчанхдагч байдлаар ашиглах ёстой. Та синтакс ашиглан хувьсагчийн нэр болон түүний утгыг командын нэрийн өмнө зааж өгч болно:

хувьсагч_нэр = утгын команд

Жишээлбэл:

EDITOR=нано дүрс

Анхдагч байдлаар, энэ тушаал нь Vim засварлагчийн тохиргоог нээдэг, гэхдээ үүнтэй орчны хувьсагчтохиргоонууд нь нано засварлагч дээр нээгдэнэ.

Програмуудыг өөр хэрэглэгчээр ажиллуулж байна

Та програмыг хэрхэн ажиллуулахаа аль хэдийн мэддэг болсон linux терминал, бусад хэрэглэгчдийн талаар юу хэлэх вэ? Windows-д программыг администратороор ажиллуулах нь нэлээд түгээмэл байдаг бөгөөд ингэснээр програм нь системд илүү их нэвтрэх эрхийг олж авах боломжтой болно. Линукс дээр sudo хэрэгслийг үүнд ашигладаг. Түүний нэрийг тайлж болно сшулам усер хийх- хэрэглэгчийг өөрчлөх, гүйцэтгэх. Анхдагч байдлаар, хэрэгсэл нь үндсэн супер хэрэглэгчийн хувьд тушаалыг ажиллуулдаг:

sudo тушаал
sudo whoami

Гэхдээ -u сонголтыг ашигласнаар та системд нэвтэрсэн дурын хэрэглэгч программыг ажиллуулж болно.

sudo -u хэрэглэгчийн нэр команд
sudo -u postgres whoami

whoami (би хэн бэ) команд нь одоогийн хэрэглэгчийн нэрийг харуулна.

Програмыг арын дэвсгэр дээр хэрхэн ажиллуулах вэ

Заримдаа цаашдын ажилд саад учруулахгүйн тулд терминал дээр удаан хугацааны програм ажиллуулах шаардлагатай болдог. Үүнийг хийхийн тулд та Linux дээр програмыг арын дэвсгэр дээр ажиллуулж болно.

програмын нэр &

Жишээлбэл:

dd if=/dev/zero of=~/файлын тоо=100000 &

Систем нь програмын өвөрмөц танигч болох PID-г гаргах бөгөөд та үүнийг хаахын тулд ашиглаж болно:

Линукс дээр скриптийг хэрхэн ажиллуулах вэ

Програмуудыг хоёртын системд хувааж, тайлбарладаг гэж бид аль хэдийн хэлсэн. Өмнө нь бид зөвхөн хоёртын програмын талаар л ярьдаг байсан. Тайлбарласан программуудыг ажиллуулахын тулд танд шууд орчуулагч хэрэгтэй бөгөөд эдгээр програмуудад Java, Python, Perl, Ruby, PHP, NodeJS болон бусад олон хэл дээр бичигдсэн програмууд орно. Ийм програмыг эхлүүлэх синтакс өөр байна:

орчуулагч /зам/хүрэх/файл/програмсонголтууд

Өөр өөр орчуулагчид өөр өөрөөр ажилладаг тул програмын бүрэн замыг нэн даруй зааж өгөх нь дээр. Python нь ихэвчлэн бүрэн замыг заахгүйгээр одоогийн фолдероос скриптүүдийг авдаг:

python hellowrld.py

Мөн Java програмуудыг дараах байдлаар эхлүүлэх шаардлагатай.

java -jar програм.jar

Тайлбарласан програмын файлуудын хувьд тэдгээрийг үндсэн програмд ​​параметр болгон дамжуулдаг тул гүйцэтгэх боломжтой туг нь сонголттой байдаг. Зөвхөн Bash скриптүүд үл хамаарах зүйл юм. Та скриптийг орчуулагчаар ажиллуулж болно:

Эсвэл зүгээр л скрипт рүү орох замыг бичнэ үү:

Бүрхүүл нь өөрөө скриптүүдээ гүйцэтгэх боломжтой тугаар тодорхойлж, гүйцэтгэдэг. Хэрэв гүйцэтгэлийн тугийг тохируулаагүй бол та үүнийг нэмэх хэрэгтэй:

sudo chmod u+x ./script.sh

Тиймээс ихэнх тайлбарласан програмуудын хувьд хурдан эхлүүлэх боломжтой энгийн sh скриптүүд бий болсон.

Linux програмуудыг GUI дээр ажиллуулж байна

График интерфейсээр дамжуулан програмуудыг ажиллуулах нь илүү тохиромжтой. Хэрэв консолын програмыг ийм байдлаар эхлүүлэх боломжгүй бол системийн үндсэн цэснээс олж болох бүх график хэрэгслүүдийн товчлолууд байдаг.

Эсвэл та програмыг дараахаас ажиллуулж болно файлын менежер, хулганыг давхар товшиж, дараа нь гүйцэтгэх боломжтой тугийг тохируулах ёстой.

Скриптүүдийг ажиллуулж байна график интерфэйс. Та бүх цэсийн товчлолыг /usr/share/applications/ лавлахаас олох боломжтой. Эндээс давхар товшиж ямар ч програмыг ажиллуулж болно. Гэхдээ товчлол дотор юу байгааг харцгаая; үүнийг хийхийн тулд текст засварлагч дээр нээнэ үү.


Бусад зүйлсийн дотор Exec мөр нь ажиллаж буй командыг зааж өгдөг linux програмуудтовчлол дээр давхар товших үед. Та одоо байгаа товчлолуудын аль нэгийг авч, түүн дээр үндэслэн өөрөө хийж болно. Энэ бол зүгээр л программын нэр юм. Гэхдээ товчлол, скрипт, cron гэх мэт газруудад бүрэн замыг зааж өгөх нь илүү дээр гэдгийг анхаарах нь чухал бөгөөд энэ нь алдааны тоог бууруулна, учир нь энэ тохиолдолд систем PATH эсвэл шалгаж байгаа эсэхийг та мэдэхгүй байна. програмыг зөвхөн одоогийн лавлахаас хайж байна. Одоо та Линукс дээр програмыг хэрхэн ажиллуулах талаар бүгдийг мэддэг болсон.

дүгнэлт

Энэ нийтлэлд бид програмыг ubuntu терминал эсвэл бусад хэлбэрээр хэрхэн ажиллуулах талаар авч үзсэн Линукс түгээлтүүд. Хэдийгээр энэ нь маш энгийн сэдэв мэт санагдаж байгаа ч хэрэг болохуйц сонирхолтой зүйлүүд байдаг. Гэхдээ та тэдний талаар аль хэдийн мэддэг болсон. Хэрэв танд асуулт байвал сэтгэгдэл дээр асуугаарай!