Linux fonida ishga tushirish buyrug'i. Linuxda dasturni qanday ishga tushirish kerak. Kutilayotgan ishlar oʻchirilmoqda

Vazifalar va jarayonlar

Linuxda ishlaydigan har qanday dastur deyiladi jarayon. Linux ko'p vazifali tizim sifatida bir yoki bir nechta foydalanuvchilarga tegishli ko'plab jarayonlar bir vaqtning o'zida bajarilishi mumkinligi bilan tavsiflanadi. Buyruq yordamida hozirda ishlayotgan jarayonlar ro'yxatini ko'rsatishingiz mumkin ps, masalan, quyidagicha:

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

E'tibor bering, sukut bo'yicha buyruq ps faqat uni ishga tushirgan foydalanuvchiga tegishli bo'lgan jarayonlar ro'yxatini ko'rsatadi. Tizimda ishlaydigan barcha jarayonlarni ko'rish uchun siz buyruqni berishingiz kerak ps -a . Jarayon raqamlari Birinchi ustunda keltirilgan (jarayon identifikatori yoki PID) tizim har bir ishlaydigan jarayonga tayinlaydigan noyob raqamlardir. BUYRUQ sarlavhali oxirgi ustun bajarilayotgan buyruq nomini bildiradi. Bunday holda, ro'yxat foydalanuvchining o'zi tomonidan boshlangan jarayonlarni o'z ichiga oladi. Tizimda ishlaydigan ko'plab boshqa jarayonlar mavjud, ular to'liq ro'yxat buyrug'i bilan ko'rish mumkin ps-aux. Biroq, foydalanuvchi Larri tomonidan boshqariladigan buyruqlar orasida faqat bash (foydalanuvchi larry uchun buyruq qobig'i) va buyruqning o'zi mavjud. ps. Bash qobig'i buyruq bilan bir vaqtda ishlayotganini ko'rish mumkin ps. Foydalanuvchi buyruqni kiritganida ps, bash qobig'i uni bajara boshladi. Jamoadan keyin ps ishini tugatdi (jadval ko'rsatiladi), boshqaruv bash jarayoniga qaytadi. Keyin bash qobig'i so'rovni ko'rsatadi va yangi buyruqni kutadi.

Ishlayotgan jarayon ham deyiladi vazifa(ish). Jarayon va vazifa atamalari bir-birining o'rnida ishlatiladi. Biroq, odatda, jarayon deganda vazifa deyiladi ish boshqaruvi(ishni nazorat qilish). Vazifani boshqarish foydalanuvchiga bir nechta ishlarni almashtirish imkoniyatini beruvchi buyruqlar qobig'i xususiyatidir.

Ko'pgina hollarda foydalanuvchilar faqat bitta vazifani bajaradilar - bu buyruqlar qobig'iga kiritilgan oxirgi buyruq bo'ladi. Biroq, ko'pgina qobiqlar (jumladan, bash va tcsh) funktsiyalarga ega ish boshqaruvi(ishni boshqarish), bir vaqtning o'zida bir nechta buyruqlarni bajarishga imkon beradi yoki vazifalar(ishlar) va kerak bo'lganda ular o'rtasida almashish.

Masalan, siz katta hajmni tahrirlayotgan bo'lsangiz, ish boshqaruvi foydali bo'lishi mumkin matn fayli va boshqa amallarni bajarish uchun tahrirlashni vaqtincha to‘xtatmoqchi. Siz muharrirni vaqtincha tark etish, qobiq taklifiga qaytish va boshqa amallarni bajarish uchun ishni boshqarish funksiyalaridan foydalanishingiz mumkin. Ular tugagach, siz muharrir bilan ishlashga qaytishingiz va uni qaysi holatda qoldirilganligini topishingiz mumkin. Ishni boshqarish funktsiyalari uchun yana ko'p foydali foydalanish mavjud.

Old va fon rejimi

Vazifalar ham bo'lishi mumkin oldingi(oldingi) yoki fon(fon). Istalgan vaqtda oldingi planda faqat bitta vazifa bo'lishi mumkin. Oldingi vazifa - siz o'zaro aloqada bo'lgan vazifa; u klaviaturadan ma'lumot oladi va chiqishni ekranga yuboradi (agar siz kirish yoki chiqishni boshqa joyga yo'naltirmagan bo'lsangiz). qarshi, fondagi ishlar terminaldan ma'lumot olmang; Odatda, bunday ishlar foydalanuvchi shovqinini talab qilmaydi.

Ba'zi vazifalarni bajarish uchun juda ko'p vaqt ketadi va ular ishlayotganda hech qanday qiziq narsa bo'lmaydi. Bunday vazifalarga misol qilib dasturlarni kompilyatsiya qilish, shuningdek, katta hajmdagi fayllarni siqish mumkin. Ekranga tikilib, bu vazifalar tugashini kutish uchun hech qanday sabab yo'q. Bunday ishlarni ishga tushirish kerak fon. Bu vaqt ichida siz boshqa dasturlar bilan ishlashingiz mumkin.

Linuxda jarayonlarning bajarilishini nazorat qilish uchun uzatish mexanizmi taqdim etiladi signallari. Signal - bu jarayonlarning to'g'ridan-to'g'ri tizim yordamida standart qisqa xabarlarni almashish qobiliyati. Signal xabari signal raqamidan tashqari hech qanday ma'lumotni o'z ichiga olmaydi (qulaylik uchun raqam o'rniga tizim tomonidan oldindan belgilangan nomdan foydalanish mumkin). Signalni uzatish uchun jarayon faqat tizim chaqiruvidan foydalanishi kerak o'ldirish(), va signalni qabul qilish uchun sizga hech narsa kerak emas. Agar jarayon signalga qandaydir maxsus tarzda javob berishi kerak bo'lsa, u ro'yxatdan o'tishi mumkin ishlov beruvchi, va agar ishlov beruvchi bo'lmasa, tizim bunga javob beradi. Odatda, bu signalni qabul qilgan jarayonning darhol tugashiga olib keladi. Signal ishlov beruvchisi ishga tushadi asinxron, signalni qabul qilgandan so'ng darhol, jarayon nima bo'lishidan qat'i nazar.

Ikkita signal - 9 raqami ( O'LDIR) va 19 ( STOP) - har doim tizim tomonidan qayta ishlanadi. Ulardan birinchisi jarayonni aniq o'ldirish uchun kerak (shuning uchun nom). Signal STOP to'xtatib turadi jarayon: bu holatda jarayon jarayon jadvalidan olib tashlanmaydi, lekin u 18-signalni olmaguncha bajarilmaydi ( DAVOM) - shundan keyin u ishlashni davom ettiradi. Linux buyruqlar qobig'ida signal STOP qochish ketma-ketligi yordamida faol jarayonga o'tkazilishi mumkin Ctrl -Z .

Signal raqami 15 ( MUDDAT) ishning uzilishiga xizmat qiladi. Da uzilish(to'xtatish) ish jarayoni o'ladi. Ishlar odatda qochish ketma-ketligi bilan to'xtatiladi Ctrl -C. To'xtatilgan ishni tiklashning hech qanday usuli yo'q. Bundan tashqari, ba'zi dasturlar signalni ushlab turishini bilishingiz kerak MUDDAT(ishlovchi yordamida), shuning uchun tugmalar birikmasini bosish Ctrl -C(o) jarayonni darhol to'xtata olmaydi. Bu dastur tugallanishidan oldin uning ish izlarini yo'q qilishi uchun amalga oshiriladi. Amalda, ba'zi dasturlarni bu tarzda to'xtatib bo'lmaydi.

Orqa fonga o'tkazish va ishlarni yo'q qilish

dan boshlaylik oddiy misol. Keling, birinchi qarashda foydasizdek tuyulishi mumkin bo'lgan "ha" buyrug'ini ko'rib chiqaylik. Bu buyruq y belgisidan iborat cheksiz satrlar oqimini standart chiqishga yuboradi. Keling, ushbu buyruq qanday ishlashini ko'rib chiqaylik:

/home/larry# ha y y y y

Bunday chiziqlar ketma-ketligi cheksiz davom etadi. Siz bu jarayonni uzilish signalini yuborish orqali, ya'ni bosish orqali yo'q qilishingiz mumkin Ctrl -C. Keling, endi narsalarni boshqacha qilaylik. Ushbu cheksiz ketma-ketlikning ekranda ko'rsatilishiga yo'l qo'ymaslik uchun biz yes buyrug'ining standart chiqishini /dev/null ga yo'naltiramiz. Ma'lumki, /dev/null qurilmasi "qora tuynuk" vazifasini bajaradi: ushbu qurilmaga yuborilgan barcha ma'lumotlar yo'qoladi. Ushbu qurilma yordamida ba'zi dasturlardan juda ko'p chiqishdan xalos bo'lish juda qulay.

/home/larry# ha > /dev/null

Endi ekranda hech narsa ko'rsatilmaydi. Biroq, qobiq so'rovi ham qaytarilmaydi. Buning sababi shundaki, yes buyrug'i hali ham ishlamoqda va y harflaridan iborat xabarlarni /dev/null ga yubormoqda. Shuningdek, siz ushbu vazifani uzilish signalini yuborish orqali yo'q qilishingiz mumkin.

Endi siz “ha” buyrug‘ining ishlashda davom etishini, shuningdek, boshqa dasturlar bilan ishlashingiz uchun ekranga qobiq so‘rovini qaytarishni xohlaysiz. Buning uchun siz "ha" buyrug'ini fonga qo'yishingiz mumkin va u siz bilan aloqa qilmasdan ishlaydi.

Jarayonni fonga qo'yishning bir usuli buyruq oxiriga & belgisini qo'shishdir. Misol:

/home/larry# ha > /dev/null & + 164 /home/larry#

Xabar shunday ish raqami jarayon uchun (ish raqami) ha. Buyruqlar qobig'i o'zi bajaradigan har bir ishga ish raqamini belgilaydi. Ha yagona bajariladigan ish bo'lgani uchun unga 1 raqami beriladi. 164 raqami bu jarayon bilan bog'liq identifikatsiya raqami (PID) va bu raqam tizim tomonidan jarayonga ham beriladi. Keyinchalik ko'rib chiqamiz, jarayonga ikkala raqamni ko'rsatish orqali kirish mumkin.

Shunday qilib, endi bizda fonda ishlayotgan "ha" jarayoni mavjud bo'lib, doimiy ravishda /dev/null qurilmasiga y oqimini yuboradi. Ushbu jarayonning holatini bilish uchun siz buyruqni bajarishingiz kerak ish o'rinlari, bu qobiqning ichki buyrug'i.

/home/larry# jobs + Ishlayotgan Ha >/dev/null & /home/larry#

Biz ushbu dastur haqiqatan ham ishlayotganini ko'ramiz. Vazifaning holatini bilish uchun siz buyruqdan ham foydalanishingiz mumkin ps, yuqorida ko'rsatilganidek.

Jarayonga signal uzatish uchun (ko'pincha ehtiyoj bor xalaqit bermoq ish ishi) yordamchi dastur ishlatiladi o'ldirish. Bu buyruq argument sifatida ish raqami yoki PID beriladi. Ixtiyoriy parametr - jarayonga yuborilishi kerak bo'lgan signalning soni. Odatiy bo'lib signal yuboriladi MUDDAT. Yuqoridagi holatda, ish raqami 1 edi, shuning uchun buyruq o'ldirish % 1 ishni to'xtatadi. Ishga uning raqami (PID emas) orqali kirilganda, bu raqamdan oldin buyruq satrida foiz belgisi (“%”) bo‘lishi kerak.

Endi buyruqni kiritamiz ish o'rinlari oldingi harakat natijasini tekshirish uchun yana:

/home/larry# ishlari tugatildi ha >/dev/null

Darhaqiqat, ish yo'q qilinadi va keyingi safar jobs buyrug'ini kiritganingizda, ekranda bu haqda hech qanday ma'lumot bo'lmaydi.

Jarayon identifikatsiya raqami (PID) yordamida ham ishni o'ldirishingiz mumkin. Bu raqam ishning identifikatsiya raqami bilan birga ish boshlanganda ko'rsatiladi. Bizning misolimizda PID qiymati 164 edi, shuning uchun buyruq 164 o'ldir buyruqqa teng bo'ladi o'ldirish % 1. PID ni o'ldirish buyrug'iga argument sifatida ishlatganda, "%" belgisini kiritish shart emas.

Ishlarni to'xtatib turish va davom ettirish

Oldinda bo'lgani kabi, avvalo, jarayonni old tomonda "ha" buyrug'i bilan boshlaylik:

/home/larry# ha > /dev/null

Avvalgidek, jarayon oldingi planda ishlayotganligi sababli, qobiq so'rovi ekranga qaytmaydi.

Endi vazifani tugmalar birikmasi bilan to'xtatish o'rniga Ctrl -C, vazifa mumkin to'xtatib turish(to'xtatib turish, so'zma-so'z - to'xtatib turish), unga signal yuborish STOP. Vazifani to'xtatib turish uchun tegishli tugmalar birikmasini bosishingiz kerak, odatda bu Ctrl -Z .

/home/larry# ha > /dev/null Ctrl -Z+ To'xtatildi ha >/dev/null /home/larry#

To'xtatilgan jarayon oddiygina bajarilmaydi. Bu protsessor resurslarini iste'mol qilmaydi. To'xtatilgan vazifa xuddi to'xtatilmagan bo'lsa, xuddi shu nuqtadan ishga tushirilishi mumkin.

Oldindan ishlayotgan ishni davom ettirish uchun siz buyruqdan foydalanishingiz mumkin fg(oldingi plan so'zidan - oldingi).

/home/larry# fg ha >/dev/null

Buyruqlar qobig'i yana bir bor buyruq nomini ko'rsatadi, shunda foydalanuvchi qaysi vazifada ekanligini biladi. bu daqiqa oldingi planda ishga tushirildi. Keling, tugmachalarni bosib yana bu vazifani to'xtatib turamiz Ctrl -Z, lekin bu safar buyrug'i bilan uni fonga o'tkazamiz bg(fon - fon so'zidan). Bu jarayonning oxirida & belgisi bo'lgan buyruq yordamida ishga tushirilgandek ishlashiga olib keladi (oldingi bo'limda bo'lgani kabi):

/home/larry# bg + ha $>$/dev/null & /home/larry#

Shell so'rovi qaytariladi. Endi jamoa ish o'rinlari jarayon ekanligini ko‘rsatishi kerak ha hozirda ishlayapti; bu jarayon buyruq bilan o'ldirilishi mumkin o'ldirish, ilgari qilinganidek.

Fonda ishlaydigan vazifani to'xtatib turish uchun klaviatura yorlig'idan foydalana olmaysiz Ctrl -Z. Ishni to'xtatib turishdan oldin uni buyruq bilan birinchi o'ringa olib chiqish kerak fg va shundan keyingina to'xtating. Shunday qilib, buyruq fg to'xtatilgan ishlarga yoki fonda ishlaydigan ishga qo'llanilishi mumkin.

Fondagi ishlar va to'xtatilgan ishlar o'rtasida katta farq bor. To'xtatilgan vazifa ishlamaydi - unga pul sarflanmaydi hisoblash quvvati protsessor. Bu ish hech qanday harakatni amalga oshirmaydi. To'xtatilgan vazifa ma'lum miqdordagi kompyuter operativ xotirasini egallaydi; bir muncha vaqt o'tgach, yadro xotiraning ushbu qismini chiqarib tashlaydi. qattiq disk « poste restante" Aksincha, fon ishi ishlamoqda, xotiradan foydalanmoqda va siz qilmoqchi bo'lgan ba'zi narsalarni qilmoqdasiz, lekin siz bir vaqtning o'zida boshqa dasturlarda ishlayotgan bo'lishingiz mumkin.

Orqa fonda ishlaydigan ishlar ekranda ba'zi matnlarni ko'rsatishga urinishi mumkin. Bu boshqa vazifalar ustida ishlashga xalaqit beradi.

/home/larry# ha &

Bu erda standart chiqish /dev/null qurilmasiga yo'naltirilmagan, shuning uchun ekranga y belgilarning cheksiz oqimi chop etiladi. Ushbu mavzuni to'xtatib bo'lmaydi, chunki tugmalar birikmasi Ctrl -C fondagi ishlarga ta'sir qilmaydi. Ushbu chiqishni to'xtatish uchun siz buyruqni ishlatishingiz kerak fg, bu vazifani birinchi o'ringa olib chiqadi va keyin tugmalar birikmasi bilan vazifani yo'q qiladi Ctrl -C .

Keling, yana bir izoh beraylik. Odatda jamoa tomonidan fg va jamoa bg yaqinda to'xtatilgan ishlarga ta'sir qiladi (agar siz buyruqni kiritsangiz, bu ishlar ish raqami yonida + belgisi bilan belgilanadi. ish o'rinlari). Agar bir yoki bir nechta ish bir vaqtning o'zida ishlayotgan bo'lsa, buyruqlarni argument sifatida belgilash orqali vazifalar oldingi yoki fonga joylashtirilishi mumkin. fg yoki buyruqlar bg ularning identifikatsiya raqami (ish ID). Masalan, buyruq fg %2 2-sonli ishni old va buyruqqa qo'yadi bg %3 3-sonli ishni fonga qo'yadi. PID-larni buyruq argumentlari sifatida foydalaning fg Va bg bu taqiqlangan.

Bundan tashqari, ishni birinchi o'ringa qo'yish uchun siz shunchaki uning raqamini ko'rsatishingiz mumkin. Ha, jamoa %2 buyrug'iga teng bo'ladi fg %2 .

Ishni boshqarish funktsiyasi qobiqqa tegishli ekanligini unutmaslik kerak. Jamoalar fg , bg Va ish o'rinlari bor ichki jamoalar chig'anoqlar. Agar biron sababga ko'ra siz ishni boshqarish funktsiyalarini qo'llab-quvvatlamaydigan buyruq qobig'idan foydalansangiz, unda siz ushbu (va shunga o'xshash) buyruqlarni topa olmaysiz.

Linux bilan ishlaydigan serverni boshqarish ko'pincha terminal oynasida buyruqlarning bir nechta manipulyatsiyasi bilan birga keladi. Bu Linuxda serverlarni boshqaradiganlar uchun tanish rasm va ba'zi hollarda buyruqlarni fonda ishlatish qulay. Bu amalda qo'llanilishi mumkin va bu foydali bo'lishi mumkin bo'lgan sabablarni ta'kidlash kerak:
— Terminal xabarlar to'plami bilan haddan tashqari yuklanganda va parallel ravishda qo'shimcha harakatlarni amalga oshirish mumkin bo'lmaganda;
— Agar siz terminalni yopsangiz, joriy jarayon va uning asosiy jarayonlari toʻxtaydi;
Bu muammolarni oddiygina hal qilish mumkin, oddiy qilib aytganda, biz ishlaydigan jarayonni boshqaruv terminalidan butunlay ajratishimiz kerak.

Ushbu postda biz Linux-ning fonda buyruqlarni ishlatish uchun foydali qobiliyatini ko'rib chiqamiz. Boshqacha qilib aytganda, siz boshlagan jarayon boshqaruv terminalidan alohida amalga oshiriladi.

Orqa fonda buyruqlar yoki jarayonlarni qanday ishga tushirish kerak
Agar jarayoningiz terminal oynasida ishlayotgan bo'lsa, buyruq yordamida uni to'xtatib qo'yishingiz mumkin Ctrl+Z, ehtimol, ko'p odamlar buni bilishadi va o'ylaydilar, shuning uchun nima. Qizig'i shundaki, jarayonni to'xtatib, biz uni fonda davom ettirishimiz mumkin, buning uchun buyruqni kiritishimiz kerak.

Ushbu buyruqni kiritgandan so'ng, jarayon davom etadi, lekin fonda. Fonda ishlaydigan barcha jarayonlarni ko'rish uchun siz buyruqni kiritishingiz mumkin

Keling, buni qanday qo'llash mumkinligi haqidagi oddiy misolni ko'rib chiqaylik. Aytaylik, bizda , uni ochishimiz kerak, lekin kutishga vaqtimiz yo'q va biz parallel ravishda ishlashni xohlaymiz.

Orqa fonda arxivni ochish

$ tar -czf home.tar.gz .

bosing Cntr+Z, keyin buyruqlarni kiriting

$bg$ ish

Ikkinchi usul - buyruqning oxiriga & belgisini qo'shish, bu tizimga buyruqni fonda ishga tushirishni bildiradi.

$ tar -czf home.tar.gz . &$ishlar

Bu usul jarayonlarning fonda ishlashiga imkon beradi, ammo STDIN, STDOUT, STDERR hali ham terminalga ulangan. Endi terminal yopiq bo'lsa ham jarayon ishlashini ta'minlaylik.

Terminal oynasini yopgandan keyin jarayonni bajarish
Terminal oynasi yopilgandan keyin ham jarayonni davom ettirish uchun biz buyruqni ishlatishimiz mumkin rad etish. U jarayonni terminal oynasining qobig'idan "ochadi", shundan so'ng u konsol oynasi yopilgandan keyin ham bajariladi.
Standart buyruqni ishlatish misolini ko'rib chiqamiz rsync, keling, uni fonda bajarishga harakat qilaylik va jarayonni terminaldan ajratamiz.

$ sudo rsync shablonlari/* /var/www/html/ & $ ishlari $ rad etish -h %1 $ ish

Buyruqdan ham foydalanishingiz mumkin nohup, u foydalanuvchi tizim qobig'idan chiqqanda ham jarayonni davom ettirishga imkon beradi.

$ nohup tar -czf iso.tar.gz Andozalar/* & $ ish o'rinlari

Linux boshqaruv terminalidan jarayonni qanday ajratish mumkin
Jarayonni boshqaruv terminalidan to'liq ajratish uchun siz grafik foydalanuvchi interfeysidan (GUI), masalan, Firefox brauzeridan foydalanganda samarali bo'ladigan buyruqdan foydalanishingiz mumkin.

$firefox/dev/null &

IN Linux tizimi(va deyarli barcha Unix tizimlarida) /dev/null maxsus qurilma fayli bo'lib, uni “null qurilma” deb ham atashadi. Unga yozish, yozilgan ma'lumotlarning miqdoridan qat'i nazar, muvaffaqiyatli amalga oshiriladi; undan o'qish faylning oxirini (EOF) o'qishga teng.

Oxirgi marta biz bash skriptlarida, fayl identifikatorlarida va oqimlarni qayta yo'naltirishda kirish, chiqish va xato oqimlari bilan ishlash haqida gaplashdik. Endi siz o'zingizning biror narsa yozish uchun etarli darajada bilasiz. Bash-ni o'zlashtirishning ushbu bosqichida sizda ishlaydigan skriptlarni qanday boshqarish va ularni ishga tushirishni avtomatlashtirish haqida savollaringiz bo'lishi mumkin.

Hozirgacha biz buyruq satriga skript nomlarini yozdik va Enter tugmasini bosdik, bu esa dasturlarning darhol ishga tushishiga olib keladi, ammo bu unday emas. yagona yo'l skriptlarni chaqirish. Bugun biz skript Linux signallari bilan qanday ishlashi mumkinligi, skriptlarni ishga tushirish va ularni ishlayotgan vaqtda boshqarishga turlicha yondashuvlar haqida gapiramiz.

Linux signallari

Linuxda tizim yoki ilovalar tomonidan ishlab chiqariladigan o'ndan ortiq signallar mavjud. Bu erda eng ko'p ishlatiladiganlar ro'yxati keltirilgan, ular skriptlarni ishlab chiqishda albatta yordam beradi buyruq qatori.
Signal kodi
Ism
Tavsif
1
SIGHUP
Terminalni yopish
2
SIGINT
Foydalanuvchi tomonidan terminaldan jarayonni to'xtatish signali (CTRL + C)
3
SIGQUIT
Foydalanuvchi tomonidan terminaldan (CTRL + \) xotira qoldig'i bilan jarayonni to'xtatish uchun signal
9
SIGKILL
Jarayonni shartsiz tugatish
15
SIGTERM
Jarayonni tugatish talabi signali
17
SIGSTOP
Jarayonni to'xtatib turishga majburlash, lekin tugatmaslik
18
SIGTSTP
Terminaldan jarayonni to'xtatib turish (CTRL+Z), lekin o'chirilmaydi
19
SIGCONT
Oldindan to'xtatilgan jarayonni bajarishni davom eting

Agar siz terminalni yopganingizda bash qobig'i SIGHUP signalini qabul qilsa, u chiqadi. Chiqishdan oldin u SIGHUP signalini undagi barcha jarayonlarga, shu jumladan ishlaydigan skriptlarga yuboradi.

SIGINT signali operatsiyani vaqtincha to'xtatishga olib keladi. Linux yadrosi protsessor vaqtini qobiqqa ajratishni to'xtatadi. Bu sodir bo'lganda, qobiq jarayonlarni SIGINT signalini yuborish orqali xabardor qiladi.

Bash skriptlari bu signallarni nazorat qilmaydi, lekin ular ularni tanib olishlari va skriptni signallar keltirib chiqaradigan oqibatlarga tayyorlash uchun ma'lum buyruqlarni bajarishlari mumkin.

Skriptlarga signallarni yuborish

Bash qobig'i klaviatura yorliqlari yordamida skriptlarga signal yuborish imkonini beradi. Agar ishlayotgan skriptni vaqtincha to'xtatish yoki uning ishlashini to'xtatish kerak bo'lsa, bu juda qulay bo'ladi.

Jarayonni tugatish

Kombinatsiya CTRL tugmalari+C SIGINT signalini ishlab chiqaradi va uni qobiqda ishlaydigan barcha jarayonlarga yuboradi, bu ularning tugatilishiga olib keladi.

Shellda quyidagi buyruqni ishga tushiramiz:

$uyqu 100
Shundan so'ng biz uning ishini CTRL + C tugmalar birikmasi bilan yakunlaymiz.


Klaviaturadan jarayonni tugatish

Jarayonni vaqtincha to'xtatish

CTRL + Z tugmalar birikmasi SIGTSTP signalini hosil qiladi, bu jarayonni to'xtatadi, lekin uni tugatmaydi. Bunday jarayon xotirada qoladi va uning ishi qayta tiklanishi mumkin. Buyruqni qobiqda ishga tushiramiz:

$uyqu 100
Va CTRL + Z tugmalar birikmasi bilan uni vaqtincha to'xtating.


Jarayonni to'xtatib turing

Kvadrat qavs ichidagi raqam qobiq jarayonga tayinlaydigan ish raqamidir. Qobiq uning ichida ishlaydigan jarayonlarni noyob raqamlarga ega ishlar sifatida ko'rib chiqadi. Birinchi jarayonga 1 raqami, ikkinchisiga - 2 va boshqalar beriladi.

Agar siz qobiq bilan bog'langan ishni to'xtatib qo'ysangiz va undan chiqishga harakat qilsangiz, bash ogohlantirish beradi.

Quyidagi buyruq yordamida to'xtatilgan ishlarni ko'rishingiz mumkin:

Ps –l


Vazifalar ro'yxati

Jarayon holatini ko'rsatadigan S ustunida to'xtatilgan jarayonlar uchun T ko'rsatiladi. Bu buyruq to'xtatilgan yoki kuzatuv holatida ekanligini ko'rsatadi.

Agar siz to'xtatilgan jarayonni tugatishingiz kerak bo'lsa, o'ldirish buyrug'idan foydalanishingiz mumkin. Bu haqda batafsil o'qishingiz mumkin.

Uning chaqiruvi quyidagicha ko'rinadi:

ProcessID ni o'ldiring

Signalni ushlab turish

Skriptda Linux signalini kuzatishni yoqish uchun trap buyrug'idan foydalaning. Agar skript ushbu buyruqni chaqirganda ko'rsatilgan signalni qabul qilsa, uni mustaqil ravishda qayta ishlaydi, qobiq esa bunday signalni qayta ishlamaydi.

Trap buyrug'i skriptga qobiq tomonidan uning aralashuvisiz qayta ishlanishi mumkin bo'lgan signallarga javob berishga imkon beradi.

Trap buyrug'i bajariladigan kodni va biz tutmoqchi bo'lgan signallar ro'yxatini bo'shliqlar bilan ajratib ko'rsatishini ko'rsatadigan misolni ko'rib chiqaylik. Bunday holda, bu faqat bitta signal:

#!/bin/bash trap "echo " Trapped Ctrl-C"" SIGINT echo Bu sinov skripti soni=1, [ $count -le 10 ] echo "Loop #$count" uyqu 1 soni=$(($) hisoblash + 1)) bajarildi
Ushbu misolda ishlatiladigan trap buyrug'i chiqadi matnli xabar u SIGINT signalini aniqlaganda, uni klaviaturada Ctrl + C tugmalarini bosish orqali hosil qilish mumkin.


Signalni ushlab turish

Har safar CTRL + C tugmalarini bosganingizda, skript qobiqni tugatishiga ruxsat berish o'rniga, trace chaqirishda ko'rsatilgan echo buyrug'ini bajaradi.

Trap buyrug'ini chaqirganda EXIT signalining nomidan foydalanib, skriptdan chiqish signalini ushlab turishingiz mumkin:

#!/bin/bash trap "echo Goodbye..." EXIT count=1, [ $count -le 5 ] echo "Loop #$count" uyqu 1 count=$(($count + 1)) bajarildi


Skriptdan chiqish signalini ushlab turish

Skript odatdagidek yoki SIGINT signali tufayli chiqib ketganda, qobiq echo buyrug'ini to'xtatadi va bajaradi.

Tutib olingan signallarni o'zgartirish va tutib olishni bekor qilish

Skript tomonidan tutilgan signallarni o'zgartirish uchun siz trap buyrug'ini yangi parametrlar bilan ishlatishingiz mumkin:

#!/bin/bash trap "echo "Ctrl-C ushlandi."" SIGINT count=1, [ $count -le 5 ] esa "Loop #$count" uyqu 1 soni=$(($count + 1) ) bajarildi trap "echo "Men tuzoqni o'zgartirdim!"" SIGINT soni=1, [ $count -le 5 ] esa "Ikkinchi tsikl #$count" uyqu 1 soni=$(($count + 1)) bajarildi


Signalni ushlab turishni o'zgartirish

O'zgartirishdan so'ng signallar yangi usulda qayta ishlanadi.

Signalni ushlab turish, shuningdek, trap buyrug'ini bajarish, unga qo'sh chiziq va signal nomini berish orqali ham bekor qilinishi mumkin:

#!/bin/bash trap "echo "Ctrl-C ushlandi."" SIGINT count=1, [ $count -le 5 ] esa "Loop #$count" uyqu 1 soni=$(($count + 1) ) bajarildi trap -- SIGINT echo "Men hozirgina tuzoqni olib tashladim" count=1, [ $count -le 5 ] esa "Ikkinchi tsikl #$count" uyqu 1 soni=$(($count + 1)) bajarildi.
Agar skript ushlash bekor qilinishidan oldin signal olsa, u uni bo'limda ko'rsatilganidek qayta ishlaydi hozirgi jamoa tuzoq. Skriptni ishga tushiramiz:

$ ./myscript
Va klaviaturada CTRL + C tugmalarini bosing.


Tushish bekor qilinishidan oldin signal ushlandi.

CTRL + C tugmalarini birinchi bosish skriptni bajarish vaqtida, signalni ushlab turish amalda bo'lganida sodir bo'ldi, shuning uchun skript signalga tayinlangan echo buyrug'ini bajardi. Bajarish unhook buyrug'iga yetgandan so'ng, CTRL + C buyrug'i odatdagidek ishladi va skriptni tugatdi.

Orqa fonda buyruq qatori skriptlarini ishga tushirish

Ba'zan bash skriptlari vazifani bajarish uchun uzoq vaqt talab etadi. Biroq, buyruq satrida skript tugashini kutmasdan normal ishlashingiz kerak bo'lishi mumkin. Amalga oshirish unchalik qiyin emas.

Agar siz ps buyrug'i orqali chiqarilgan jarayonlar ro'yxatini ko'rgan bo'lsangiz, fonda ishlayotgan va terminalga ulanmagan jarayonlarni ko'rgan bo'lishingiz mumkin.
Keling, quyidagi skriptni yozamiz:

#!/bin/bash count=1, [ $count -le 10 ] uyquda 1 ta hisob=$((($count + 1)) bajarildi
Ismdan keyin ampersand belgisini (&) ko'rsatib, uni ishga tushiramiz:

$ ./myscipt &
Bu uning fon jarayoni sifatida ishlashiga olib keladi.


Skriptni fonda ishga tushirish

Skript fonda ishga tushiriladi, uning identifikatori terminalda ko'rsatiladi va uning bajarilishi tugagach, siz bu haqda xabarni ko'rasiz.

Esda tutingki, skript fonda ishlayotgan bo'lsa-da, u STDOUT va STDERR ga xabarlarni chiqarish uchun terminaldan foydalanishda davom etadi, ya'ni u chiqaradigan matn yoki xato xabarlari terminalda ko'rinadi.


Jarayonlar ro'yxati

Ushbu yondashuv bilan, agar siz terminaldan chiqsangiz, fonda ishlaydigan skript ham chiqadi.

Terminalni yopgandan keyin skript ishlashda davom etishini xohlasangiz nima bo'ladi?

Terminal yopilganda chiqmaydigan skriptlarni bajarish

Terminal seansidan chiqqandan keyin ham skriptlar fon jarayonlarida bajarilishi mumkin. Buning uchun siz nohup buyrug'idan foydalanishingiz mumkin. Bu buyruq jarayonga yuborilgan SIGHUP signallarini bloklash orqali dasturni ishga tushirish imkonini beradi. Natijada, jarayon u ishga tushirilgan terminaldan chiqqaningizda ham amalga oshiriladi.

Skriptimizni ishga tushirishda ushbu texnikani qo'llaymiz:

Nohup ./myscript &
Bu terminalga chiqadigan narsa.


Team nohup

Nohup buyrug'i jarayonni terminaldan ajratadi. Bu jarayon STDOUT va STDERR ga havolalarni yo'qotishini anglatadi. Skript tomonidan chiqarilgan ma'lumotlarni yo'qotmaslik uchun nohup STDOUT va STDERR-ga kelgan xabarlarni avtomatik ravishda nohup.out fayliga yo'naltiradi.

E'tibor bering, agar siz bir xil katalogdan bir nechta skriptlarni ishga tushirsangiz, ularning chiqishi bitta nohup.out faylida tugaydi.

Topshiriqlarni ko'rish

Jobs buyrug'i qobiqda ishlayotgan joriy ishlarni ko'rish imkonini beradi. Keling, quyidagi skriptni yozamiz:

#!/bin/bash count=1 [ $count -le 10 ] echo "Loop #$count" uyqu 10 soni=$(($count + 1)) bajarildi
Keling, uni ishga tushiramiz:

$ ./myscript
Va CTRL + Z tugmalar birikmasi bilan uni vaqtincha to'xtating.


Skriptni ishga tushirish va pauza qilish

Skriptning chiqishini ekranda hech narsa ko'rsatmasligi uchun faylga yo'naltirish bilan bir xil skriptni fonda ishga tushiramiz:

$ ./myscript > tashqi fayl &
Ishlar buyrug'ini bajargandan so'ng, biz to'xtatilgan skript va fonda ishlaydigan skript haqida ma'lumotni ko'ramiz.


Skriptlar haqida ma'lumot olish

Ishlar buyrug'ini chaqirishda -l tugmasi bizga jarayon identifikatorlari haqida ma'lumot kerakligini ko'rsatadi.

To'xtatilgan ishlarni qayta boshlash

Skriptni fonda qayta ishga tushirish uchun siz bg buyrug'idan foydalanishingiz mumkin.

Skriptni ishga tushiramiz:

$ ./myscript
CTRL + Z tugmalarini bosing, bu uning bajarilishini vaqtincha to'xtatadi. Quyidagi buyruqni ishga tushiramiz:

$bg


bg buyrug'i

Endi skript fonda ishlamoqda.

Agar sizda bir nechta to'xtatilgan ishlar bo'lsa, muayyan ishni qayta boshlash uchun ish raqamini bg buyrug'iga o'tkazishingiz mumkin.

Ishni qayta boshlash uchun normal rejim fg buyrug'idan foydalaning:

Skriptlarni ishga tushirishni rejalashtirish

Linux ma'lum bir vaqtda bash skriptlarini ishga tushirishning bir nechta usullarini taqdim etadi. Bular buyruq va cron ish rejalashtiruvchisi.

at buyrug'i quyidagicha ko'rinadi:

[-f fayl nomi] vaqtida
Bu buyruq ko'p vaqt formatlarini taniydi.

  • Standart, soat va daqiqalarni ko'rsatuvchi, masalan - 10:15.
  • AM/PM indikatorlaridan foydalanish, tushdan oldin yoki keyin, masalan - 22:15.
  • Hozir, peshin, yarim tun kabi maxsus nomlardan foydalanish.
Ish bajarilishi kerak bo'lgan vaqtni belgilash imkoniyatidan tashqari, at buyrug'i qo'llab-quvvatlanadigan formatlardan biri yordamida sanani ham o'tkazishi mumkin.
  • Sana MMDDYY, AA/DD/YY yoki DD.MM.YY naqshlari yordamida yoziladigan standart sana formati.
  • Sananing matnli ko'rinishi, masalan, 4 iyul yoki 25 dekabr, yilni ko'rsatish mumkin yoki siz usiz ham qilishingiz mumkin.
  • Hozir kabi yozib olish + 25 daqiqa.
  • Yozuv tomoshasi ertaga 22:15.
  • Yozib olish turi 10:15 + 7 kun.
Keling, ushbu mavzuga chuqurroq kirmaylik, keling, buyruq uchun oddiy foydalanish holatini ko'rib chiqaylik:

$ at -f ./myscript hozir


at buyrug'i yordamida ishlarni rejalashtirish

Qo'ng'iroq qilishda -M kaliti skript chiqadigan narsalarni yuborish uchun ishlatiladi elektron pochta, agar tizim mos ravishda sozlangan bo'lsa. Agar yuborsangiz elektron pochta mumkin emas, bu kalit shunchaki chiqishni bostiradi.

Bajarilishi kutilayotgan ishlar ro'yxatini ko'rish uchun siz atq buyrug'idan foydalanishingiz mumkin:


Kutilayotgan vazifalar ro'yxati

Kutilayotgan ishlar oʻchirilmoqda

atrm buyrug'i kutilayotgan ishni o'chirish imkonini beradi. Unga qo'ng'iroq qilganda, vazifa raqamini ko'rsating:

$atrm 18


Ishni o'chirish

Skriptlarni jadval bo'yicha ishga tushiring

At buyrug'i yordamida skriptlaringizni bir marta ishga tushirishni rejalashtirish ko'p holatlarda hayotni osonlashtirishi mumkin. Ammo skript har kuni bir vaqtning o'zida yoki haftada bir marta yoki oyda bir marta bajarilishi kerak bo'lsa-chi?

Linuxda muntazam ravishda ishga tushirilishi kerak bo'lgan skriptlarni rejalashtirish imkonini beruvchi crontab yordam dasturi mavjud.

Crontab fonda ishlaydi va cron jadvallari deb ataladigan ma'lumotlarga asoslanib, rejalashtirilgan ishlarni bajaradi.

Mavjud cron ish jadvalini ko'rish uchun quyidagi buyruqdan foydalaning:

$ crontab –l
Skriptni jadval bo'yicha ishlashni rejalashtirayotganda, crontab ishni qachon bajarish kerakligi haqidagi ma'lumotlarni quyidagi formatda qabul qiladi:

Daqiqa, soat, oyning kuni, oy, haftaning kuni.
Misol uchun, agar siz har kuni soat 10:30 da buyruq deb nomlangan ma'lum bir skript bajarilishini istasangiz, bu vazifa jadvalidagi quyidagi yozuvga mos keladi:

30 10 * * * buyrug'i
Bu erda oy kuni, oy va hafta kuni maydonlarida ishlatiladigan "*" joker belgisi cron har oyning har kuni ertalab soat 10:30 da buyruqni bajarishi kerakligini bildiradi.

Agar, masalan, skriptni har dushanba kuni soat 16:30 da ishga tushirishni istasangiz, vazifalar jadvalida quyidagi yozuvni yaratishingiz kerak bo'ladi:

30 16 * * 1 buyrug'i
Hafta kunlarini raqamlash 0 dan boshlanadi, 0 yakshanbani, 6 shanbani bildiradi. Mana yana bir misol. Bu erda buyruq har oyning birinchi kuni soat 12 da bajariladi.

00 12 1 * * buyrug'i
Oylar 1 dan boshlab raqamlangan.
Jadvalga yozuv qo'shish uchun -e kaliti bilan crontabga qo'ng'iroq qilishingiz kerak:

Crontab -e
Keyin jadval yaratish buyruqlarini kiritishingiz mumkin:

30 10 * * * /home/likegeeks/Desktop/myscript
Ushbu buyruq tufayli skript har kuni soat 10:30 da chaqiriladi. Agar siz "Resurs vaqtincha mavjud emas" xatosiga duch kelsangiz, quyidagi buyruqni root sifatida ishga tushiring:

$ rm -f /var/run/crond.pid
Siz bir nechta maxsus kataloglardan foydalangan holda cron yordamida skriptlarni davriy ishga tushirishni tashkil qilishingiz mumkin:

/etc/cron.hourly /etc/cron.daily /etc/cron.weekly /etc/cron.monthly
Skript faylini ulardan biriga joylashtirish uni mos ravishda soatlik, kunlik, haftalik yoki oylik ishlashiga olib keladi.

Kirish va qobiqni ishga tushirishda skriptlarni ishga tushiring

Siz foydalanuvchi login yoki qobiqni ishga tushirish kabi turli hodisalar asosida skriptlarni ishga tushirishni avtomatlashtirishingiz mumkin. Bunday holatlarda qayta ishlangan fayllar haqida o'qishingiz mumkin. Masalan, bu quyidagi fayllar:

$HOME/.bash_profile $HOME/.bash_login $HOME/.profile
Kirishda skriptni ishga tushirish uchun uning chaqiruvini .bash_profile fayliga joylashtiring.

Terminalni ochganingizda skriptlarni ishga tushirish haqida nima deyish mumkin? .bashrc fayli buni tartibga solishga yordam beradi.

Natijalar

Bugun biz boshqaruv bilan bog'liq masalalarni muhokama qildik hayot davrasi skriptlar, biz skriptlarni fonda qanday ishga tushirish, ularning bajarilishini rejalashtirish haqida gaplashdik. Keyingi safar, bash skriptlaridagi funktsiyalar va kutubxonani ishlab chiqish haqida o'qing.

Hurmatli kitobxonlar! Jadvalda ishlash uchun buyruq qatori skriptlarini rejalashtirish uchun asboblardan foydalanasizmi? Ha bo'lsa, ular haqida bizga xabar bering.

Linux terminal xizmati sukut bo'yicha bitta vazifa rejimida ishlaydi. Bu shuni anglatadiki, ishga tushirilgan har qanday ekipaj u tugaguniga qadar terminalni to'sib qo'yadi. Bu yondashuv uzoq bajarish vaqtini talab qiladigan dasturlarni ishga tushirishda qulay emas. Bu muammo ikki usulda hal qilish mumkin: qo'shimcha terminal oynasini oching va unda boshqa buyruqni bajaring yoki fon rejimidan foydalaning. Barcha joriy operatsion tizimlar, shu jumladan Linux, ko'p vazifali bo'lib, bu bir vaqtning o'zida bir nechta dasturlarni bajarish qobiliyatini anglatadi.

Buyruqlar satri interfeysiga darhol kirishim uchun brigadani fonda qanday boshqarishim mumkin? Ishga majbur bo'lgan ekipaj fon jarayoni deb ataladi. Fondagi jarayonlar ekranda ko'rsatilmaydi. Masalan, Apache HTTPD serveri veb-sahifalarga xizmat ko'rsatish uchun fonda ishlaydi. Siz qobiq skriptini yoki har qanday buyruqni past ustuvorlik rejimiga qo'yishingiz mumkin. Vazifa (masalan, ekipaj yoki skript) buyruq satrining oxiriga "&" qo'shish orqali fonga qo'yilishi mumkin. Ushbu bayonot buyruqni fonga qo'yadi va terminalda joy bo'shatadi. Orqa fonda ishlaydigan jamoa ish deb ataladi. Fon buyrug'i ishlayotganda, boshqa istalgan buyruqlarni bajarish mumkin. Sintaksis quyidagicha:

buyruq & skript nomi & /path/to/command arg1 arg2 & buyruq-1 | buyruq-2 arg1 & buyruq-1 | buyruq-2 -arg1 -arg2 >/path/to/output &

Terminal oynasini bloklamasdan dasturlarni fonda ishga tushirish uchun siz maxsus "&" instruktoridan foydalanishingiz kerak. Buyruq nomini, variantlarni va kiritish parametrlarini ko'rsatgandan so'ng, ushbu belgini qatorning eng oxiriga qo'ying. IN umumiy ko'rinish bu ketma-ketlikni “command_name -option input_parameter &” sifatida kiritish mumkin.

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

Enter tugmasini bosgandan so'ng, dastur avtomatik ravishda fonda boshlanadi. Bunday holda, terminal quyidagi tarkibga ega bo'lgan qatorni ko'rsatadi “[vazifa_raqami] jarayon_identifikatori” va sizdan yangi yaratilgan buyruqni kiritishingizni taklif qiladi.

Linuxda fonda ishlaydigan buyruqlarni toping

Quyidagi buyruqni bajaring:

Ma'lumotlar chiqishiga misol:

find / -iname "*.c" 2> /dev/null > /tmp/output.txt &
+ Ishlayotgan grep -R "hostNamed" / 2> /dev/null > /tmp/grep.txt &

Buyurtma identifikatorlari qayerda.

Standart translatsiyalarga qo'shimcha ravishda ish identifikatorlari uchun jarayon identifikatorlarini ko'rsatish uchun -l opsiyasini o'tkazing:

Ma'lumotlar chiqishiga misol:

7307 Ishlayotgan qidiruv / -iname "*.c" 2> /dev/null > /tmp/output.txt &
+ 7324 ishlayotgan grep -R "hostNamed" / 2> /dev/null > /tmp/grep.txt &

Faqat jarayon identifikatorlarini ko'rsatish uchun quyidagilarni kiriting:

Ma'lumotlar chiqishiga misol:

Orqa fonda ishlaydigan buyruqlarni bajarishni to'xtating

Jarayonni majburan yoki chiroyli tarzda tugatish uchun o'ldirish buyrug'idan foydalaning. Sintaksis quyidagicha:

PIDni o'ldiring
o'ldirish -15 PID
o'ldirish -9 PID
killall jarayoni - Ism - Bu erda
killall -15 jarayon-Ism-bu yerda
killall -9 jarayon-Ism-bu yerda

Linuxda dasturni oldingi rejimga qaytarish

Linux nafaqat fonda dasturlarni ishga tushirish, balki agar xohlasangiz, ularni normal bajarilishiga qaytarish imkonini beradi. Buning uchun ikkita vosita mavjud: buyruq ( Jamoa - bu umumiy maqsadlar va manfaatlar asosida birlashgan odamlar guruhi.) fg va % operatori. Ularning harakat tamoyili juda oddiy. fg parametr sifatida ish raqamini ko'rsatishni talab qiladi va bo'sh joysiz operatordan keyin darhol % ga almashtirilishi kerak.

toping / -name .ini 2> ~/results.txt &
19090
fg 1
bash: fg: vazifa tugadi
+ Chiqish 1 toping / -name .ini 2> ~/results.txt

Asosan, operatsion tizim yadro va turli vazifalarni bajarish, tizimni saqlash va foydalanuvchi ehtiyojlarini qondirish uchun mo'ljallangan ulkan dasturlar to'plamidan iborat. Foydalanuvchi va operatsion tizim o'rtasidagi deyarli barcha o'zaro aloqalar dasturlar orqali amalga oshiriladi. Shuning uchun, yangi boshlanuvchilar uchun Linuxda dasturni qanday ishga tushirishni, ishga tushirish vaqtida nima sodir bo'lishini va ishga tushirish usullari qanday ekanligini tushunish muhimdir.

Dasturlarni ishga tushirishga o'tishdan oldin, avvalo dastur nima ekanligini tushunishimiz kerak. Linuxda dasturlar boshqa fayllardan faqat bajariladigan bayroqlar to'plamiga egaligi bilan farq qiladi. Men bu haqda allaqachon maqolada batafsil yozganman, shuning uchun uni takrorlamayman.

Barcha dasturlarni bir necha turga bo'lish mumkin:

  • Ikkilik dasturlar- protsessorga bajarilishi uchun tayyor bo'lgan ko'rsatmalarni o'z ichiga oladi, ko'pchilik dasturlar shu formatda bo'ladi, ular tez va tizim tomonidan darhol bajariladi;
  • Bayt kodli dasturlar- bular endi protsessor ko'rsatmalari emas, balki ularni bajara oladigan ma'lum bir virtual mashinaning ko'rsatmalari; virtual mashinasiz bunday buyruqlarni bajarib bo'lmaydi. Bunday dasturlar ko'proq resurslarni sarflaydi, lekin ayni paytda juda tezdir, ularning afzalligi shundaki, ular ishlashlari mumkin bo'lgan har qanday joyda o'zgartirilmasdan bajarilishi mumkin. virtual mashina. Bunday dasturlarga Java dasturlari kiradi.
  • Skript dasturlari- bu dasturlar maxsus tarjimon tomonidan bajariladigan oddiy matndagi buyruqlar majmuasidan iborat. Bunday dasturlar sekinroq, lekin ularni ishlab chiqish osonroq va ularning kodini osongina va tez o'zgartirish mumkin.

Endi dasturlarni ishga tushirishga o'tamiz.

Terminalda dasturlarni ishga tushirish

Dastlab operatsiya xonalarida Unix tizimlari va Linux grafik interfeysga ega emas edi, shuning uchun dasturlar terminaldan buyruqlar yordamida ishga tushirildi. Endi bu ham mumkin va tajribali foydalanuvchilar tomonidan faol foydalanilmoqda. Dasturni ishga tushirish sintaksisi quyidagicha ko'rinadi:

/yo'l/to/fayl/dastur variantlari

Parametrlar faqat kerak bo'lganda ko'rsatiladi, ammo qobiq har doim dasturning to'liq yo'lini bilishi kerak. Dastur nomi va bo'sh joydan keyingi hamma narsa parametrdir. Dasturlarni bajarishda biz odatda to'liq yo'lni ko'rsatmasligimizni allaqachon sezgan bo'lsangiz kerak. Bu juda uzoq va noqulay bo'lar edi.

Ishlab chiquvchilar vaqtinchalik yechim topishdi. PATH o'zgaruvchisi yaratildi, u odatda dasturlar joylashgan papkalarga barcha yo'llarni saqlaydi - /bin, /sbin, /usr/bin, /usr/sbin va boshqalar. Uning tarkibini buyruq bilan ko'rishingiz mumkin:

Dastur nomini kiritganingizda, tizim PATH papkasining barcha papkalarida shu nomdagi bajariladigan faylni qidiradi va agar topsa, uni bajaradi. Agar bunday fayl bo'lmasa, "buyruq topilmadi" xabari ko'rsatiladi. Shunday qilib, tizim dasturlaridan birini ishga tushirish uchun uning nomini kiritish kifoya bajariladigan fayl, Masalan:

Va bo'sh joydan keyin parametrlarni o'tkazishingiz mumkin:

Agar dastur ushbu kataloglarda bo'lmasa, unga to'liq yo'lni ko'rsatishingiz kerak:

/usr/local/bin/ls1

Agar dasturni orqali ishga tushirishni istasangiz ubuntu terminali, joriy papkada joylashgan, keyin vaziyat biroz boshqacha bo'ladi. Tizim faqat PATH o'zgaruvchisidagi papkalarni qidiradi, joriy katalogni qidirmaydi. Shuning uchun, agar siz bajariladigan fayl nomini yozsangiz, siz xatoga duch kelasiz. To'liq yo'lni ko'rsatishingiz kerak, esingizda bo'ladi./:

Ba'zan ba'zi bir maxsus o'tkazish zarur bo'ladi. Masalan, EDITOR o'zgaruvchisi qaysini ko'rsatadi matn muharriri standart sifatida ishlatilishi kerak. Sintaksis yordamida buyruq nomidan oldin o'zgaruvchi nomini va uning qiymatini belgilashingiz mumkin:

o'zgaruvchi_nomi = qiymat buyrug'i

Masalan:

EDITOR=nano visudo

Odatiy bo'lib, ushbu buyruq Vim muharriridagi sozlamalarni ochadi, lekin bu bilan atrof-muhit o'zgaruvchisi sozlamalar nano muharririda ochiladi.

Dasturlarni boshqa foydalanuvchi sifatida ishga tushirish

Dasturni qanday ishga tushirishni allaqachon bilasiz linux terminali, boshqa foydalanuvchilar haqida nima deyish mumkin? Windows-da dasturlarni administrator sifatida ishga tushirish odatiy holdir, shunda dastur tizimda ko'proq kirish huquqiga ega bo'ladi. Linuxda buning uchun sudo yordam dasturi ishlatiladi. Uning ismini shunday tushunish mumkin s jodugar u ser qil- foydalanuvchini o'zgartirish va bajarish. Odatiy bo'lib, yordamchi dastur ildiz superuser sifatida buyruqni bajaradi:

sudo buyrug'i
sudo whoami

Ammo -u opsiyasidan foydalanib, dasturni tizimga kirgan har qanday foydalanuvchi sifatida ishga tushirishingiz mumkin:

sudo -u foydalanuvchi nomi buyrug'i
sudo -u postgres whoami

Whoami (kimman) buyrug'i joriy foydalanuvchining ismini ko'rsatadi.

Dasturni fonda qanday ishga tushirish kerak

Ba'zan keyingi ishlarga xalaqit bermasligi uchun terminalda uzoq muddatli dasturni ishga tushirish kerak bo'ladi. Buning uchun dasturni Linuxda fonda ishga tushirishdan foydalanishingiz mumkin:

dastur_nomi &

Masalan:

dd if=/dev/nol of=~/fayl soni=100000 &

Tizim dasturning noyob identifikatori bo'lgan PIDni chiqaradi, undan keyin uni yopish uchun ishlatishingiz mumkin:

Linuxda skriptni qanday ishga tushirish kerak

Dasturlar binarga bo'linadi va izohlanadi, deb aytgan edik. Ilgari biz faqat ikkilik dasturlar haqida gapirgan edik. Tarjima qilingan dasturlarni ishga tushirish uchun sizga to'g'ridan-to'g'ri tarjimon kerak bo'ladi; bunday dasturlarga Java, Python, Perl, Ruby, PHP, NodeJS va boshqa tillarda yozilgan dasturlar kiradi. Bunday dasturni ishga tushirish sintaksisi boshqacha:

tarjimon /yo'l/to/fayl/dastur variantlari

Turli tarjimonlar boshqacha yo'l tutishadi, shuning uchun darhol dasturga to'liq yo'lni ko'rsatish yaxshiroqdir. Python odatda to'liq yo'lni ko'rsatmasdan skriptlarni joriy jilddan oladi:

python hellowrld.py

Va Java dasturlari quyidagicha ishga tushirilishi kerak:

java -jar dasturi.jar

Sharhlangan dastur fayllari uchun bajarilish bayrog'i ixtiyoriy, chunki ular asosiy dasturga parametr sifatida uzatiladi. Faqat Bash skriptlari bundan mustasno. Skriptni tarjimon yordamida ishga tushirishingiz mumkin:

Yoki shunchaki skriptga yo'lni yozing:

Qobiqning o'zi o'z skriptlarini bajarilish bayrog'i bilan aniqlaydi va ularni bajaradi. Agar bajarilish bayrog'i o'rnatilmagan bo'lsa, uni qo'shishingiz kerak:

sudo chmod u+x ./script.sh

Shuning uchun, ko'pgina sharhlangan dasturlar uchun tezda ishga tushirilishi mumkin bo'lgan oddiy sh skriptlari yaratilgan.

GUIda Linux dasturlarini ishga tushirish

Dasturlarni grafik interfeys orqali ishga tushirish ancha qulayroq. Agar konsol dasturlarini shu tarzda ishga tushirishning iloji bo'lmasa, tizimning asosiy menyusida topishingiz mumkin bo'lgan barcha grafik yordam dasturlari uchun yorliqlar mavjud:

Shu bilan bir qatorda, dasturni ishga tushirishingiz mumkin fayl menejeri, sichqonchani ikki marta bosish orqali, lekin keyin buning uchun bajarilish bayrog'i o'rnatilishi kerak.

Skriptlarni ishga tushirish grafik interfeys. Menyuning barcha yorliqlarini /usr/share/applications/ katalogida topishingiz mumkin. Har qanday dasturni bu yerdan ikki marta bosish orqali ishga tushirish mumkin. Ammo keling, yorliq ichida nima borligini ko'rib chiqaylik; buni amalga oshirish uchun uni matn muharririda oching:


Boshqa narsalar qatorida, Exec qatori ishlaydigan buyruqni belgilaydi linux dasturlari yorliqni ikki marta bosganingizda. Siz mavjud yorliqlardan birini olishingiz va unga asoslanib, o'zingizni yaratishingiz mumkin. Bu shunchaki dasturning nomi. Ammo shuni ta'kidlash kerakki, yorliqlar, skriptlar, cron va boshqalar kabi joylarda to'liq yo'lni ko'rsatish yaxshiroqdir, bu xatolar sonini kamaytiradi, chunki bu holda tizim PATH yoki yo'lni tekshiradimi yoki yo'qligini bilolmaysiz. dasturni faqat joriy katalogdan qidiring. Endi siz Linuxda dasturni qanday ishga tushirish haqida hamma narsani bilasiz.

xulosalar

Ushbu maqolada biz dasturni ubuntu terminali yoki boshqasi orqali qanday ishga tushirishni ko'rib chiqdik Linux distributivlari. Bu juda oddiy mavzu bo'lib ko'rinsa ham, foydali bo'lishi mumkin bo'lgan qiziqarli fikrlar mavjud. Ammo siz ular haqida allaqachon bilasiz. Agar sizda biron bir savol bo'lsa, sharhlarda so'rang!