А.В. Столяров - Операционная среда ОС UNIX для изучающих программирование, страница 5
Описание файла
PDF-файл из архива "А.В. Столяров - Операционная среда ОС UNIX для изучающих программирование", который расположен в категории "". Всё это находится в предмете "операционные системы" из 3 семестр, которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .
Просмотр PDF-файла онлайн
Текст 5 страницы из PDF
Òåêóùèé ñïèñîê âûïîëíÿåìûõ ôîíîâûõ çàäà÷ìîæíî óçíàòü êîìàíäîé jobs:$ jobs[1]+ Runningls -lR / >list.txt 2>/dev/null &Ïî îêîí÷àíèè âûïîëíåíèÿ çàäà÷è êîìàíäíûé èíòåðïðåòàòîð íàì îáýòîì ñîîáùèò.  ñëó÷àå óñïåøíîãî çàâåðøåíèÿ ñîîáùåíèå áóäåò âûãëÿäåòü òàê:[1]+Donels -lR / >list.txt 2>/dev/null & ñëó÷àå, åñëè ïðîãðàììà çàâåðøèëàñü ñ êîäîì, îòëè÷íûì îò íóëÿ, ñîîáùåíèå áóäåò èìåòü äðóãîé âèä:[1]+Exit 1ls -lR / >list.txt 2>/dev/null &Íàêîíåö, åñëè ôîíîâûé ïðîöåññ ñíÿòü ñèãíàëîì, ñîîáùåíèå áóäåò ïðèìåðíî òàêèì (äëÿ ñèãíàëà SIGTERM):[1]+Terminatedls -lR / >list.txt 2>/dev/null &Ïðè îòïðàâëåíèè ñèãíàëîâ ïðîöåññàì, ÿâëÿþùèìñÿ ôîíîâûìè çàäà÷àìè äàííîãî êîíêðåòíîãî ýêçåìïëÿðà êîìàíäíîãî èíòåðïðåòàòîðà,ìîæíî ññûëàòüñÿ íà íîìåðà ïðîöåññîâ ïî íîìåðàì ôîíîâûõ çàäà÷,äîáàâëÿÿ ê íîìåðó ñèìâîë %. Òàê, êîìàíäà kill %2 îòïðàâèò ñèãíàëSIGTERM âòîðîé ôîíîâîé çàäà÷å.
Ñèìâîë % áåç óêàçàíèÿ íîìåðà îáîçíà÷àåò ïîñëåäíþþ èç ôîíîâûõ çàäà÷.Åñëè çàäà÷à óæå çàïóùåíà íå â ôîíîâîì ðåæèìå è íàì íå õî÷åòñÿ æäàòü å¼ çàâåðøåíèÿ, ìû ìîæåì ñäåëàòü îáû÷íóþ çàäà÷ó ôîíîâîé.Äëÿ ýòîãî ñëåäóåò íàæàòü Ctrl-Z, â ðåçóëüòàòå ÷åãî âûïîëíåíèå òåêóùåé çàäà÷è áóäåò ïðèîñòàíîâëåíî. Çàòåì ñ ïîìîùüþ êîìàíäû bg7 ïðèîñòàíîâëåííóþ çàäà÷ó ìîæíî ñíîâà ïîñòàâèòü íà âûïîëíåíèå, íî óæå âôîíîâîì ðåæèìå.Òàêæå âîçìîæíî ñäåëàòü òåêóùåé (ò.å.
òàêîé, îêîí÷àíèÿ êîòîðîéîæèäàåò êîìàíäíûé èíòåðïðåòàòîð) ëþáóþ èç ôîíîâûõ è ïðèîñòàíîâëåííûõ çàäà÷. Ýòî äåëàåòñÿ ñ ïîìîùüþ êîìàíäû fg8 .78Îò àíãëèéñêîãî background ôîíÎò àíãëèéñêîãî foreground21 2.8. Ýëåêòðîííàÿ äîêóìåíòàöèÿÄèñòðèáóòèâû ÎÑ Unix îáû÷íî ñîäåðæàò áîëüøîå êîëè÷åñòâî äîêóìåíòàöèè, äîñòóï ê êîòîðîé ìîæíî ïîëó÷èòü íåïîñðåäñòâåííî â ïðîöåññå ðàáîòû. Áîëüøàÿ ÷àñòü òàêîé äîêóìåíòàöèè îôîðìëåíà â âèäåôàéëîâ, îòîáðàæàåìûõ ñ ïîìîùüþ òðàäèöèîííîé êîìàíäû man, ëèáî ñïîìîùüþ áîëåå ñîâðåìåííîé ïðîãðàììû info. 2.8.1. Êîìàíäà manÊîìàíäà man ñëóæèò äëÿ ïîèñêà è îòîáðàæåíèÿ óñòàíîâëåííîé âñèñòåìå ñïðàâî÷íîé èíôîðìàöèè.
Ñïðàâî÷íèê îõâàòûâàåò êîìàíäû ÎÑUnix, ñèñòåìíûå âûçîâû, áèáëèîòå÷íûå ôóíêöèè ÿçûêà Ñè (è äðóãèõóñòàíîâëåííûõ â ñèñòåìå ÿçûêîâ), ôîðìàòû ôàéëîâ, íåêîòîðûå îáùèåïîíÿòèÿ è ò.ä.Ê ïðèìåðó, åñëè âû õîòèòå óçíàòü âñå îïöèè êîìàíäû ls, ñëåäóåòäàòü êîìàíäó man ls, à åñëè âû, äîïóñòèì, çàáûëè, â êàêîì ïîðÿäêåèäóò àðãóìåíòû ñèñòåìíîãî âûçîâà waitpid(), âàì ïîìîæåò êîìàíäàman waitpid.
Ïðîãðàììà man íàéäåò ñîîòâåòñòâóþùèé äîêóìåíò â ñèñòåìíîì ñïðàâî÷íèêå è çàïóñòèò ïðîãðàììó åãî îòîáðàæåíèÿ. Ïîÿâèâøèéñÿ íà ýêðàíå äîêóìåíò ìîæíî ëèñòàòü ñ ïîìîùüþ êëàâèø ñòðåëêàââåðõ è ñòðåëêà âíèç, ìîæíî èñïîëüçîâàòü êëàâèøó ïðîáåë, ÷òîáû ïðîïóñòèòü ñðàçó ñòðàíèöó òåêñòà. Âûõîä èç ïðîñìîòðà ñïðàâî÷íîãîäîêóìåíòà îñóùåñòâëÿåòñÿ êëàâèøåé q (îò ñëîâà quit).Åñëè íóæíûé âàì ñïðàâî÷íûé äîêóìåíò èìååò áîëüøîé îáúåì, à âàìíåîáõîäèìî íàéòè â íåì îïðåäåëåííîå ìåñòî, ìîæåò îêàçàòüñÿ óäîáíûìïîèñê ïîäñòðîêè. Ýòî äåëàåòñÿ ââîäîì ñèìâîëà /, ïîñëå êîòîðîãî ñëåäóåò íàáðàòü ñòðîêó äëÿ ïîèñêà è íàæàòü Enter.
Ïîâòîðíûé ïîèñê òîé æåñòðîêè îñóùåñòâëÿåòñÿ ââîäîì / è íàæàòèåì Enter (òî åñòü ñàìó ñòðîêó ìîæíî îïóñòèòü). ×òîáû âûïîëíèòü ïîèñê â îáðàòíîì íàïðàâëåíèè,ìîæíî âîñïîëüçîâàòüñÿ ñèìâîëîì ? âìåñòî /. íåêîòîðûõ ñëó÷àÿõ ñèñòåìíûé ñïðàâî÷íèê ìîæåò ñîäåðæàòü áîëååîäíîãî äîêóìåíòà ñ äàííûì èìåíåì. Òàê, â ñèñòåìå ñóùåñòâóåò êîìàíäàwrite è ñèñòåìíûé âûçîâ write.
Êîìàíäà write âàì âðÿä ëè ïîíàäîáèòñÿ, òàê ÷òî, åñëè âû íàáðàëè man write, ñêîðåå âñåãî, âû èìåëè ââèäó ñèñòåìíûé âûçîâ; ê ñîæàëåíèþ, ñèñòåìà ýòîãî íå çíàåò è âûäàñòâàì ñîâñåì íå òîò äîêóìåíò, êîòîðûé âàì íóæåí.Ýòó ïðîáëåìó ìîæíî ðåøèòü óêàçàíèåì íîìåðà ñåêöèè ñèñòåìíîãîñïðàâî÷íèêà.
Òàê, â íàøåì ïðèìåðå êîìàíäà$ man 2 write22âûäàñò èìåííî äîêóìåíò, ïîñâÿùåííûé ñèñòåìíîìó âûçîâó write, ïîñêîëüêó ñåêöèÿ 2 ñîäåðæèò ñïðàâî÷íûå äîêóìåíòû ïî ñèñòåìíûì âûçîâàì. Ïåðå÷èñëèì äðóãèå ñåêöèè ñèñòåìíîãî ñïðàâî÷íèêà:• 1 ïîëüçîâàòåëüñêèå êîìàíäû ÎÑ Unix (òàêèå êîìàíäû, êàê ls,rm, mv è ò.ï. îïèñûâàþòñÿ â ýòîé ñåêöèè);• 2 ñèñòåìíûå âûçîâû ÿäðà ÎÑ Unix;• 3 áèáëèîòå÷íûå ôóíêöèè ÿçûêà Ñè (ê ýòîé ñåêöèè ìîæíî îáðàòèòüñÿ, íàïðèìåð, çà èíôîðìàöèåé î ôóíêöèè sprintf);• 4 îïèñàíèÿ ôàéëîâ óñòðîéñòâ;• 5 îïèñàíèÿ ôîðìàòîâ ñèñòåìíûõ êîíôèãóðàöèîííûõ ôàéëîâ;• 6 èãðîâûå ïðîãðàììû;• 7 îáùèå ïîíÿòèÿ (íàïðèìåð, man 7 ip âûäàñò ïîëåçíóþ èíôîðìàöèþ î ïðîãðàììèðîâàíèè ñ èñïîëüçîâàíèåì TCP/IP);• 8 êîìàíäû ñèñòåìíîãî àäìèíèñòðèðîâàíèÿ ÎÑ Unix (íàïðèìåð,â ýòîé ñåêöèè âû íàéäåòå îïèñàíèå êîìàíäû mount, ïðåäíàçíà÷åííîé äëÿ ìîíòèðîâàíèÿ ôàéëîâûõ ñèñòåì).Ñèñòåìà ìîæåò ñîäåðæàòü è äðóãèå ñåêöèè, ïðè÷åì íå îáÿçàòåëüíî îáîçíà÷àþùèåñÿ öèôðîé; òàê, ïðè óñòàíîâêå â ñèñòåìå èíòåðïðåòàòîðàÿçûêà Tcl åãî ñïðàâî÷íûå ñòðàíèöû îáû÷íî îôîðìëÿþòñÿ â îòäåëüíóþñåêöèþ, êîòîðàÿ ìîæåò íàçûâàòüñÿ n, 3n è ò.ï. 2.8.2.
Êîìàíäà infoÅñëè êîìàíäà man ñëóæèò äëÿ îòîáðàæåíèÿ îòäåëüíûõ äîêóìåíòîâ,òî êîìàíäà info ïîçâîëÿåò îñóùåñòâëÿòü ïðîñìîòð öåëûõ íàáîðîâ ñòðàíèö, ñâÿçàííûõ ìåæäó ñîáîé ãèïåðññûëêàìè; èíà÷å ãîâîðÿ, äîêóìåíòûâ ôîðìàòå info ïðåäñòàâëÿþò ñîáîé ãèïåðòåêñò, à ñàìà êîìàíäà áðàóçåð (ïðîñìîòðùèê) ãèïåðòåêñòà, ðàáîòàþùèé â òåêñòîâîì ðåæèìå.Ñèñòåìà info ÷àñòî ñîäåðæèò áîëåå ïîäðîáíóþ èíôîðìàöèþ î òîìæå ïðåäìåòå, ÷åì man. Òàê, man make âûäàñò äîâîëüíî ñêóäíóþ èíôîðìàöèþ îá îïöèÿõ êîìàíäíîé ñòðîêè êîìàíäû make, â òî âðåìÿ êàêinfo make ïîçâîëèò îñíîâàòåëüíî èçó÷èòü ðàáîòó ñ ïðîãðàììîé make(ñì. 4.3), íàó÷èòüñÿ ñîñòàâëÿòü åå âõîäíûå ôàéëû è ò.ä.Ïðè ðàáîòå ñ ïðîãðàììîé info ìîæíî ïðîëèñòûâàòü òåêñò ñ ïîìîùüþ êëàâèø ñòðåëîê è ïðîáåëà. Êëàâèøè n è p ïîçâîëÿþò ïåðåéòè,ñîîòâåòñòâåííî, ê ñëåäóþùåé è ïðåäûäóùåé ñòðàíèöå ãèïåðòåêñòà.
Ãèïåðññûëêè â òåêñòå çàêëþ÷åíû ìåæäó çíàêîì * è ::, íàïðèìåð:* Reading Makefiles::How makefiles are parsedÅñëè ïîçèöèîíèðîâàòü êóðñîð íà ñëîâàõ Reading Makefiles è íàæàòü23Enter, ïðîèçîéäåò ïåðåõîä ïî äàííîé ãèïåðññûëêå. Åñëè íåîáõîäèìî ïåðåéòè íàçàä, ìîæíî âîñïîëüçîâàòüñÿ êëàâèøåé l (îò ñëîâà last).Âûõîä èç ïðîãðàììû info ïðîèçâîäèòñÿ ïî êëàâèøå q (îò ñëîâà quit)èëè íàæàòèåì Ctrl-C. 2.9. Äîïîëíèòåëüíûå âîçìîæíîñòè 2.9.1.
Êîìàíäíûå ôàéëû â Bourne ShellÈíòåðïðåòàòîð Bourne Shell ïîçâîëÿåò îñóùåñòâëÿòü íå òîëüêî ðàáîòó â ðåæèìå äèàëîãà ñ ïîëüçîâàòåëåì, íî è âûïîëíåíèå ïðîãðàìì,íàçûâàåìûõ êîìàíäíûìè ôàéëàìè (ñêðèïòàìè). Ôàéë ñ ïðîãðàììîé,ïðåäíàçíà÷åííîé äëÿ èñïîëíåíèÿ èíòåðïðåòàòîðîì Bourne Shell, äîëæåí íà÷èíàòüñÿ ñî ñòðîêè#!/bin/shÏåðåìåííûå â ÿçûêå Bourne Shell èìåþò èìåíà, ñîñòîÿùèå èç ëàòèíñêèõ áóêâ, öèôð, çíàêà ïîä÷åðêèâàíèÿ è íà÷èíàþùèåñÿ âñåãäà ñ áóêâû. Çíà÷åíèåì ïåðåìåííîé ìîæåò áûòü ëþáàÿ ñòðîêà ñèìâîëîâ.
×òîáûïðèñâîèòü ïåðåìåííîé çíà÷åíèå, íåîáõîäèìî íàïèñàòü îïåðàòîð ïðèñâàèâàíèÿ, íàïðèìåð:I=10MYFILE=/tmp/the_file_nameMYSTRING="Here are several words"Îáðàòèòå âíèìàíèå, ÷òî â èìåíè ïåðåìåííîé, à òàêæå âîêðóã çíàêà ðàâåíñòâà (ñèìâîëà ïðèñâàèâàíèÿ) íå äîëæíî áûòü ïðîáåëîâ, â ïðîòèâíîìñëó÷àå êîìàíäà áóäåò ðàñöåíåíà íå êàê ïðèñâàèâàíèå, à êàê îáû÷íàÿêîìàíäà, â êîòîðîé çíàê ïðèñâàèâàíèÿ îäèí èç ïàðàìåòðîâ.Äëÿ îáðàùåíèÿ ê ïåðåìåííîé èñïîëüçóåòñÿ çíàê $, íàïðèìåð:echo $I $MYFILE $MYSTRING ðåçóëüòàòå âûïîëíåíèÿ ýòîé êîìàíäû áóäåò íàïå÷àòàíî:10 /tmp/the_file_name Here are several wordsÏðè íåîáõîäèìîñòè ñêîìïîíîâàòü ñëèòíûé òåêñò èç çíà÷åíèé ïåðåìåííûõ ìîæíî èìåíà ïåðåìåííûõ çàêëþ÷àòü â ôèãóðíûå ñêîáêè, íàïðèìåð:echo ${I}abc24Ýòà êîìàíäà íàïå÷àòàåò:10abcÄëÿ âûïîëíåíèÿ àðèôìåòè÷åñêèõ äåéñòâèé èñïîëüçóåòñÿ êîíñòðóêöèÿ $(( )).
Íàïðèìåð, êîìàíäàI=$(( $I + 7 ))óâåëè÷èò çíà÷åíèå ïåðåìåííîé I íà ñåìü.Ñ ïîìîùüþ âñòðîåííîé â èíòåðïðåòàòîð Bourne Shell êîìàíäû testìîæíî îñóùåñòâëÿòü ïðîâåðêó âûïîëíåíèÿ ðàçëè÷íûõ óñëîâèé. Åñëèçàäàííîå óñëîâèå âûïîëíåíî, êîìàíäà çàâåðøèòñÿ ñ íóëåâûì (óñïåøíûì) êîäîì âîçâðàòà, â ïðîòèâíîì ñëó÷àå ñ åäèíè÷íûì (íåóñïåøíûì).Ñèíîíèìîì êîìàíäû test ÿâëÿåòñÿ ñèìâîë îòêðûâàþùåé êâàäðàòíîéñêîáêè, ïðè÷åì ñàìà êîìàíäà â ýòîì ñëó÷àå âîñïðèíèìàåò ñèìâîë çàêðûâàþùåé êâàäðàòíîé ñêîáêè â êà÷åñòâå ñâîåãî ïàðàìåòðà (êàê çíàêîêîí÷àíèÿ âûðàæåíèÿ), ÷òî ïîçâîëÿåò íàãëÿäíî çàïèñûâàòü ïðîâåðÿåìîå âûðàæåíèå, çàêëþ÷àÿ åãî â êâàäðàòíûå ñêîáêè. Ïðèâåä¼ì íåñêîëüêî ïðèìåðîâ.[ -f "file.txt" ]# ñóùåñòâóåò ëè ôàéë ñ èìåíåì file.txt[ "$I" -lt 25 ]# çíà÷åíèå ïåðåìåííîé I ìåíüøå 25[ "$A" = "abc" ]# çíà÷åíèå ïåðåìåííîé A ÿâëÿåòñÿ ñòðîêîé abc[ "$A" != "abc" ]# çíà÷åíèå ïåðåìåííîé A íå ÿâëÿåòñÿ ñòðîêîé abcÝòî ìîæíî, íàïðèìåð, èñïîëüçîâàòü â îïåðàòîðå âåòâëåíèÿ:if [ -f "file.txt" ]; thencat "file.txt"elseecho "Ôàéë file.txt íå íàéäåí"fiÇàìåòèì, ÷òî òî æå ñàìîå ìîæíî áûëî íàïèñàòü è èíà÷å, áåç èñïîëüçîâàíèÿ êâàäðàòíûõ ñêîáîê, íî ýòî ìåíåå íàãëÿäíî:if test -f "file.txt" ; thencat "file.txt"25elseecho "Ôàéë file.txt íå íàéäåí"fi êà÷åñòâå êîìàíäû, ïðîâåðÿþùåé óñëîâèå, ìîæåò ôèãóðèðîâàòü íåòîëüêî test, íî è ëþáàÿ äðóãàÿ êîìàíäà.
Íàïðèìåð:if gcc -Wall -g myprog.c -o myprog; thenecho "Êîìïèëÿöèÿ ïðîøëà óñïåøíî"elseecho "Ïðè êîìïèëÿöèè ïðîèçîøëà îøèáêà"fiÊðîìå îïåðàòîðà âåòâëåíèÿ, ÿçûê Bourne Shell ïîääåðæèâàåò è áîëååñëîæíûå êîíñòðóêöèè, â òîì ÷èñëå öèêëû. Íàïðèìåð, ñëåäóþùèé ôðàãìåíò íàïå÷àòàåò âñå ÷èñëà îò 1 äî 100:I=0while [ $I -le 101 ]; doecho $II=$(( $I + 1 ))doneÈñïîëüçîâàòü èíôîðìàöèþ îá óñïåøíîñòè âûïîëíåíèÿ êîìàíäûìîæíî òàêæå ñ ïîìîùüþ òàê íàçûâàåìûõ ëîãè÷åñêèõ ñâÿçîê && è ||,îçíà÷àþùèõ, ñîîòâåòñòâåííî, ëîãè÷åñêèå îïåðàöèè è è èëè. Ïðè ýòîìëîãè÷åñêîìó çíà÷åíèþ èñòèíà ñîîòâåòñòâóåò óñïåøíîå çàâåðøåíèå êîìàíäû, à çíà÷åíèþ ëîæü íåóñïåøíîå.
Êîìàíäíàÿ ñòðîêà$ cmd1 && cmd2çàñòàâèò èíòåðïðåòàòîð âûïîëíèòü ñíà÷àëà êîìàíäó cmd1, à çàòåì âñëó÷àå åå óñïåøíîãî çàâåðøåíèÿ êîìàíäó cmd2; â ñëó÷àå íåóñïåøíîãî çàâåðøåíèÿ ïåðâîé êîìàíäû âòîðàÿ âûïîëíÿòüñÿ íå áóäåò. Íàîáîðîò,êîìàíäíàÿ ñòðîêà$ cmd1 || cmd2ïîäðàçóìåâàåò çàïóñê cmd2 â ñëó÷àå íåóñïåøíîãî çàâåðøåíèÿ cmd1.Ïðèîðèòåò ëîãè÷åñêèõ ñâÿçîê ìåæäó ñîáîé òðàäèöèîííûé (òî åñòü èïðèîðèòåòíåå, ÷åì èëè).  òî æå âðåìÿ, ïðèîðèòåò îïåðàöèé êîíâåéåð èïåðåíàïðàâëåíèé ââîäà-âûâîäà âûøå, ÷åì ïðèîðèòåò ëîãè÷åñêèõ ñâÿçîê; òàê,êîìàíäà$ cmd1 && cmd2 | cmd326ïðåäñòàâëÿåò ñîáîé ñâÿçêó ìåæäó êîìàíäîécmd1è êîíâåéåðîìcmd2 | cmd3êàê öåëûì. Çíà÷åíèå èñòèííîñòè êîíâåéåðà îïðåäåëÿåòñÿ óñïåøíîñòüþèëè íåóñïåøíîñòüþ âûïîëíåíèÿ ïîñëåäíåé èç ñîñòàâëÿþùèõ åãî êîìàíä.Î÷åðåäíîñòü ïðèìåíåíèÿ îïåðàöèé, êàê îáû÷íî, ìîæíî èçìåíèòü èñïîëüçîâàíèåì êðóãëûõ ñêîáîê, íàïðèìåð:$ (cmd1 && cmd2) | cmd3 ýòîì ïðèìåðå ñòàíäàðòíûé âûâîä êîìàíäcmd1ècmd2(åñëè, êîíå÷íî, îíàâîîáùå áóäåò âûïîëíÿòüñÿ), áóäåò íàïðàâëåí íà ñòàíäàðòíûé ââîäcmd3.Äëÿ áîëåå ïîäðîáíîé èíôîðìàöèè î ïðîãðàììèðîâàíèè íà ÿçûêåBourne Shell ñëåäóåò îáðàòèòüñÿ ê ñïåöèàëüíîé ëèòåðàòóðå [1]. 2.9.2.