А.В. Столяров - Введение в операционные системы (1114673), страница 11
Текст из файла (страница 11)
òåðìèíàëà, òî åñòü 1, 2, 3, ..., 1246− íîìåðäû ïîëüçîâàòåëÿ è âûïîëíÿåò èõ. Ñëåäóåò îòìåòèòü, ÷òî êîìàíäíûé èíòåðïðåòàòîð − ýòî îáûêíîâåííàÿ ïîëüçîâàòåëüñêàÿ ïðîãðàììà, êîòîðóþ ìîæíîíå ñ÷èòàòü ÷àñòüþ îïåðàöèîííîé ñèñòåìû.Ñóùåñòâóåò íåñêîëüêî äåñÿòêîâ ðàçëè÷íûõ êîìàíäíûõ èíòåðïðåòàòîðîâ.Ìû áóäåì ðàññìàòðèâàòü ïðèìåðû äëÿ ñòàíäàðòíîãî èíòåðïðåòàòîðà BourneShell.10.2Äåðåâî êàòàëîãîâ è íàâèãàöèÿ.
ÔàéëûÑèñòåìà êàòàëîãîâ â ÎÑ Unix íåñêîëüêî îòëè÷àåòñÿ îò ïðèâû÷íîé ïîëüçîâàòåëÿì MSDOS è WinXX, è íàèáîëåå çàìåòíûå íà ïåðâûé âçãëÿä îòëè÷èÿ −ýòî îòñóòñòâèå áóêâ, îáîçíà÷àþùèõ óñòðîéñòâà (÷òî-òî âðîäå A:, C: è ò.ï.),à òàêæå òî îáñòîÿòåëüñòâî, ÷òî èìåíà êàòàëîãîâ ðàçäåëÿþòñÿ â ÎÑ Unix íåîáðàòíîé, à ïðÿìîé êîñîé ÷åðòîé (/).Ïîñëå âõîäà â ñèñòåìó âû îêàæåòåñü â âàøåì äîìàøíåì êàòàëîãå. Äîìàøíèé êàòàëîã − ýòî ìåñòî äëÿ õðàíåíèÿ âàøèõ ëè÷íûõ ôàéëîâ. ×òîáûóçíàòü èìÿ (ïóòü) òåêóùåãî êàòàëîãà, ââåäèòå êîìàíäó pwd:$ pwd/home/stud/s2003324Óçíàòü, êàêèå ôàéëû íàõîäÿòñÿ â òåêóùåì êàòàëîãå, ìîæíî ñ ïîìîùüþêîìàíäû ls:$ lsDesktoptmpÈìåíà ôàéëîâ â ÎÑ Unix ìîãóò ñîäåðæàòü ëþáîå êîëè÷åñòâî òî÷åê â ëþáûõ ïîçèöèÿõ, ò.å.
íàïðèìåð, èìÿ a.b..c...d....e ÿâëÿåòñÿ âïîëíå äîïóñòèìûì èìåíåì ôàéëà. Ïðè ýòîì äåéñòâóåò ñîãëàøåíèå, ÷òî èìåíà, íà÷èíàþùèåñÿ ñ òî÷êè, ñîîòâåòñòâóþò íåâèäèìûì ôàéëàì. ×òîáû óâèäåòü âñå ôàéëû,âêëþ÷àÿ íåâèäèìûå, ìîæíî âîñïîëüçîâàòüñÿ êîìàíäîé ls -a:$ ls -a. .. .bash_historyDesktoptmpÍåêîòîðûå èç ïîêàçàííûõ èìåí ìîãóò ñîîòâåòñòâîâàòü ïîäêàòàëîãàì òåêóùåãî êàòàëîãà, äðóãèå ìîãóò èìåòü ñïåöèàëüíûå çíà÷åíèÿ. ×òîáû áûëîïðîùå ðàçëè÷àòü ôàéëû ïî òèïàì, ìîæíî âîñïîëüçîâàòüñÿ ôëàæêîì -F:$ ls -aF./ ../ .bash_historyDesktop/47tmp/cpmvrmmkdirrmdirtouchlessÊîïèðîâàíèå ôàéëàÏåðåèìåíîâàíèå èëè ïåðåìåùåíèå ôàéëàÓäàëåíèå ôàéëàÑîçäàíèå êàòàëîãàÓäàëåíèå êàòàëîãàÑîçäàíèå ôàéëà èëè óñòàíîâêà íîâîãî âðåìåíè ìîäèôèêàöèèÏðîñìîòð ñîäåðæèìîãî ôàéëà ñ ðàçáèâêîé íà ñòðàíèöûÒàáëèöà 1: Êîìàíäû äëÿ ðàáîòû ñ ôàéëàìèÒåïåðü ìû âèäèì, ÷òî âñå èìåíà, êðîìå .bash_history, ñîîòâåòñòâóþò êàòàëîãàì.
Çàìåòèì, ÷òî . − ýòî ññûëêà íà ñàì òåêóùèé êàòàëîã, à .. −ññûëêà íà ðîäèòåëüñêèé êàòàëîã (ò.å. êàòàëîã, ñîäåðæàùèé òåêóùèé êàòàëîã;â íàøåì ïðèìåðå ýòî /home/stud).Ïåðåéòè â äðóãîé êàòàëîã ìîæíî êîìàíäîé cd:$ pwd/home/stud/s2003324$ cd tmp$ pwd/home/stud/s2003324/tmp$ cd ..$ pwd/home/stud/s2003324$ cd /usr/include$ pwd/usr/include$ cd /$ pwd/$ cd$ pwd/home/stud/s2003324Ïîñëåäíèé ïðèìåð ïîêàçûâàåò, ÷òî êîìàíäà cd áåç óêàçàíèÿ êàòàëîãà äåëàåòòåêóùèì äîìàøíèé êàòàëîã ïîëüçîâàòåëÿ, êàê ýòî áûëî ñðàçó ïîñëå âõîäà âñèñòåìó.Îñíîâíûå êîìàíäû ðàáîòû ñ ôàéëàìè ïåðå÷èñëåíû â òàáëèöå 1.4810.3Àðãóìåíòû êîìàíäíîé ñòðîêèÁîëüøèíñòâî êîìàíä ïðèíèìàåò äîïîëíèòåëüíûå êëþ÷è, íà÷èíàþùèåñÿñî çíàêà '-'. Òàê, êîìàíäà rm -r the_dir ïîçâîëÿåò óäàëèòü äèðåêòîðèþthe_dir âìåñòå ñî âñåì åå ñîäåðæèìûì.Êàê ìîæíî çàìåòèòü, ÷àñòî êîìàíäà ñîñòîèò èç íåñêîëüêèõ ñëîâ.
Ïîÿñíèì ýòî. Ïåðâîå èç ñëîâ ÿâëÿåòñÿ èìåíåì ïðîãðàììû, êîòîðóþ ñëåäóåò çàïóñòèòü, ëèáî èìåíåì âñòðîåííîé êîìàíäû (òî åñòü êîìàíäû, îáðàáàòûâàåìîéñàìèì èíòåðïðåòàòîðîì áåç ïðèìåíåíèÿ âíåøíèõ ïðîãðàìì; ïðèìåðîì òàêîéêîìàíäû ÿâëÿåòñÿ cd). Èìÿ ïðîãðàììû, ïîäëåæàùåé çàïóñêó, ìîæíî çàäàòüè ñ óêàçàíèåì êàòàëîãà, â êîòîðîì îíà íàõîäèòñÿ, íàïðèìåð:$ /bin/ls -l -a$ /usr/local/bin/pine -f sentÎñòàëüíûå ñëîâà, ñîñòàâëÿþùèå êîìàíäó, íàçûâàþòñÿ àðãóìåíòàìè êîìàíäíîé ñòðîêè è ìîãóò çàäàâàòü êëþ÷è, ïîäîáíûå ðàññìîòðåííûì âûøå (-a, -lè ò.ï.), èìåíà ôàéëîâ è êàòàëîãîâ, è ò.ï.Îáû÷íî èíòåðïðåòàòîð âîñïðèíèìàåò ñèìâîë ïðîáåëà êàê ðàçäåëèòåëü ïàðàìåòðîâ êîìàíäíîé ñòðîêè.
Ïðè íåîáõîäèìîñòè, îäíàêî, ìîæíî èñïîëüçîâàòü ïðîáåë è êàê îáû÷íûé ñèìâîë, â òîì ÷èñëå, íàïðèìåð,ñêëåèòü íåñêîëüêî ñëîâ â îäèí ïàðàìåòð. Òàê, åñëè ìû îáíàðóæèìôàéë, â èìåíè êîòîðîãî ñîäåðæèòñÿ ïðîáåë (íàïðèìåð, ÷òî-íèáóäü âðîäåjust a file.txt), ñòåðåòü åãî ìîæíî îäíîé èç òàêèõ êîìàíä:$ rm "just a file.txt"$ rm just\ a\ file.txtÊàâû÷êè è ñèìâîë îáðàòíîé êîñîé ÷åðòû ïîçâîëÿþò îòìåíèòü ñïåöèàëüíûéñìûñë è äëÿ íåêîòîðûõ äðóãèõ ñèìâîëîâ, ñ êîòîðûìè ìû âñòðåòèìñÿ íèæå.10.4Ïåðåíàïðàâëåíèÿ ââîäà-âûâîäàÏðàêòè÷åñêè âñå ïðîãðàììû â ÎÑ Unix ñëåäóþò ñîãëàøåíèþ, ïî êîòîðîìóêàæäàÿ ïðîãðàììà èìååò ïîòîê ñòàíäàðòíîãî ââîäà, ïîòîê ñòàíäàðòíîãîâûâîäà è ïîòîê ñîîáùåíèé îá îøèáêàõ.Îñóùåñòâëÿÿ îáìåí äàííûìè ÷åðåç ñòàíäàðòíûå ïîòîêè, áîëüøèíñòâîïðîãðàìì íå äåëàåò ïðåäïîëîæåíèé î òîì, ñ ÷åì íà ñàìîì äåëå ñâÿçàí òîòèëè èíîé ïîòîê. Ýòî ïîçâîëÿåò èñïîëüçîâàòü îäíè è òå æå ïðîãðàììû êàêäëÿ ðàáîòû ñ òåðìèíàëîì, òàê è äëÿ ÷òåíèÿ èç ôàéëà è/èëè çàïèñè â ôàéë.Êîìàíäíûå èíòåðïðåòàòîðû, â òîì ÷èñëå êëàññè÷åñêèé Bourne Shell,ïðåäîñòàâëÿþò âîçìîæíîñòè äëÿ óïðàâëåíèÿ ââîäîì-âûâîäîì çàïóñêàåìûõïðîãðàìì.
Äëÿ ýòîãî èñïîëüçóþòñÿ ñèìâîëû <, >, >>, >& è | (ñì. òàáëèöó 2).49cmd1 > file1cmd2cmd3cmd1cmd4cmd5çàïóñòèòü ïðîãðàììó cmd1, íàïðàâèâ åå âûâîä â ôàéë file1. Åñëè ôàéë ñóùåñòâóåò, îíáóäåò ïåðåçàïèñàí ñ íóëÿ, åñëè íå ñóùåñòâóåò − áóäåò ñîçäàí.< file2çàïóñòèòü ïðîãðàììó cmd2, ïîäàâ åé ñîäåðæèìîå ôàéëà file2 â êà÷åñòâå ñòàíäàðòíîãîââîäà. Åñëè ôàéëà íå ñóùåñòâóåò, ïðîèçîéäåòîøèáêà.> file1 < file2 çàïóñòèòü ïðîãðàììó cmd3, ïåðåíàïðàâèâ êàêââîä, òàê è âûâîä.| cmd2çàïóñòèòü îäíîâðåìåííî ïðîãðàììû cmd1 ècmd2, ïîäàâ äàííûå ñî ñòàíäàðòíîãî âûâîäàïåðâîé íà ñòàíäàðòíûé ââîä âòîðîé.2> errfileíàïðàâèòü ïîòîê ñîîáùåíèé îá îøèáêàõ âôàéë errfile.2>&1 | cmd6îáúåäèíèòü ïîòîêè ñòàíäàðòíîãî âûâîäà èâûâîäà îøèáîê ïðîãðàììû cmd5 è íàïðàâèòüâñå íà ñòàíäàðòíûé ââîä ïðîãðàììå cmd6Òàáëèöà 2: Ïðèìåðû ïåðåíàïðàâëåíèé ââîäà-âûâîäàÎáû÷íî â ÎÑ Unix ïðèñóòñòâóåò ïðîãðàììà less, ïîçâîëÿþùàÿ ïîñòðàíè÷íî ïðîñìàòðèâàòü ñîäåðæèìîå ôàéëîâ, ïîëüçóÿñü êëàâèøàìè "Ñòðåëêàââåðõ "Ñòðåëêà âíèç PgUp, PgDn è äð.
äëÿ ïðîêðóòêè. Ýòà æå ïðîãðàììà ïîçâîëÿåò ïîñòðàíè÷íî ïðîñìàòðèâàòü òåêñò, ïîäàííûé åé íà ñòàíäàðòíûé ââîä.Èñïîëüçîâàíèå ïðîãðàììû less ïîëåçíî â ñëó÷àå, åñëè èíôîðìàöèÿ, âûäàâàåìàÿ êàêîé-ëèáî èç çàïóñêàåìûõ âàìè ïðîãðàìì, íå óìåùàåòñÿ íà ýêðàí.Íàïðèìåð, êîìàíäàls -lR | lessïîçâîëèò âàì ïðîñìîòðåòü ñïèñîê âñåõ ôàéëîâ, íàõîäÿùèõñÿ â òåêóùåé äèðåêòîðèè è âñåõ åå ïîääèðåêòîðèÿõ.10.5Óïðàâëåíèå ïðîöåññàìèÑïèñîê ïðîöåññîâ, âûïîëíÿþùèõñÿ â íàñòîÿùèé ìîìåíò, ìîæíî ïîëó÷èòüêîìàíäîé ps:$ psPID TTYTIME CMD502199 pts/52241 pts/5$00:00:00 bash00:00:00 psÊàê âèäíî, êîìàíäà ïî óìîë÷àíèþ âûäàåò òîëüêî ñïèñîê ïðîöåññîâ, çàïóùåííûõ â äàííîì êîíêðåòíîì ñåàíñå ðàáîòû.Ê ñîæàëåíèþ, êëþ÷è êîìàíäû ps î÷åíü ñèëüíî îòëè÷àþòñÿ â çàâèñèìîñòèîò ñèñòåìû (â ÷àñòíîñòè, îíè ðàçëè÷íû äëÿ FreeBSD è Linux). Çà ïîäðîáíîéèíôîðìàöèåé ñëåäóåò îáðàùàòüñÿ ê äîêóìåíòàöèè ïî êîíêðåòíîé ÎÑ; çäåñüìû îãðàíè÷èìñÿ çàìå÷àíèåì, ÷òî êîìàíäà ps ax âûäàñò ñïèñîê âñåõ ñóùåñòâóþùèõ ïðîöåññîâ, à êîìàíäà ps axu äîïîëíèòåëüíî âûäàñò èíôîðìàöèþî âëàäåëüöàõ ïðîöåññîâ3 .Ñíÿòü ïðîöåññ ìîæíî ñ ïîìîùüþ ñèãíàëà.
Ïîñêîëüêó ñèãíàëû íàìè ïîêàíå ðàññìàòðèâàëèñü, îãðàíè÷èìñÿ çàìå÷àíèåì, ÷òî êîìàíäà kill 2736 ñíèìàåò ïðîöåññ íîìåð 2736, åñëè òîëüêî ïðîöåññ íå ïðåäïðèíÿë ñïåöèàëüíûõìåð; êîìàíäà kill -9 2736 óíè÷òîæèò ïðîöåññ â ëþáîì ñëó÷àå, è ïîìåøàòüýòîìó ïðîöåññ íå ìîæåò.10.6Âûïîëíåíèå â ôîíîâîì ðåæèìåÍåêîòîðûå ïðîãðàììû âûïîëíÿþòñÿ îùóòèìîå âðåìÿ, ïðè ýòîì íå òðåáóÿâçàèìîäåéñòâèÿ ñ ïîëüçîâàòåëåì ÷åðåç ñòàíäàðòíûå ïîòîêè ââîäà/âûâîäà. Âîâðåìÿ âûïîëíåíèÿ òàêèõ ïðîãðàìì óäîáíî èìåòü âîçìîæíîñòü ïðîäîëæàòüäàâàòü êîìàíäû êîìàíäíîìó èíòåðïðåòàòîðó.Äîïóñòèì, íàì ïîòðåáîâàëñÿ ñïèñîê âñåõ ôàéëîâ â ôàéëîâîé ñèñòåìå. Òàêîé ñïèñîê ìîæíî ïîëó÷èòü ñ ïîìîùüþ êîìàíäû ls -lR /.
Åñòåñòâåííî áûëî áû ïåðåíàïðàâèòü åå âûâîä â ôàéë, ÷òîáû ïîçäíåå èìåòü âîçìîæíîñòü åãîàíàëèçà. Çàìåòèì, ÷òî òàêàÿ êîìàíäà áóäåò âûïîëíÿòüñÿ íåñêîëüêî ìèíóò,è æäàòü åå îêîí÷àíèÿ íàì áû íå õîòåëîñü, ïîñêîëüêó ýòè íåñêîëüêî ìèíóòìû ìîãëè áû, íàïðèìåð, èñïîëüçîâàòü äëÿ íàáîðà òåêñòà â ðåäàêòîðå. ×òîáû çàïóñòèòü êîìàíäó â ôîíîâîì ðåæèìå, ê íåé ñëåäóåò â êîíöå ïðèïèñàòüñèìâîë &, íàïðèìåð:$ ls -lR / >list.txt 2>/dev/null &[1] 2437$Ïåðåíàïðàâëåíèå ïîòîêà âûâîäà ñîîáùåíèé îá îøèáêàõ â /dev/null ñäåëàíîäëÿ òîãî, ÷òîáû ñîîáùåíèÿ î íåâîçìîæíîñòè ÷òåíèÿ íåêîòîðûõ êàòàëîãîâ íåìåøàëî íàøåé äàëüíåéøåé ðàáîòå.3 Ýòîâåðíî äëÿ ÎÑ Linux è FreeBSD.
 äðóãèõ ÎÑ, íàïðèìåð â SunOS/Solaris, îïöèè êîìàíäû ps èìåþòñîâåðøåííî èíîé ñìûñë51 îòâåò íà íàøó êîìàíäó ñèñòåìà ñîîáùàåò, ÷òî çàäàíèå çàïóùåíî â ôîíîâîì ðåæèìå â êà÷åñòâå ôîíîâîé çàäà÷è 1, ïðè÷åì íîìåð çàïóùåííîãîïðîöåññà − 2437.Åñëè çàäà÷à óæå çàïóùåíà íå â ôîíîâîì ðåæèìå è íàì íå õî÷åòñÿ æäàòüåå çàâåðøåíèÿ, ìû ìîæåì ñäåëàòü îáû÷íóþ çàäà÷ó ôîíîâîé. Äëÿ ýòîãî ñëåäóåò íàæàòü Ctrl-Z, â ðåçóëüòàòå ÷åãî âûïîëíåíèå òåêóùåé çàäà÷è áóäåòïðèîñòàíîâëåíî. Çàòåì ñ ïîìîùüþ êîìàíäû bg4 ïðèîñòàíîâëåííóþ çàäà÷óìîæíî ñíîâà ïîñòàâèòü íà âûïîëíåíèå, íî óæå â ôîíîâîì ðåæèìå.Òàêæå âîçìîæíî ñäåëàòü òåêóùåé (ò.å. òàêîé, îêîí÷àíèÿ êîòîðîé îæèäàåòêîìàíäíûé èíòåðïðåòàòîð) ëþáóþ èç ôîíîâûõ è ïðèîñòàíîâëåííûõ çàäà÷.Ýòî äåëàåòñÿ ñ ïîìîùüþ êîìàíäû fg5 .10.7Êîìàíäíûå ôàéëûÊîìàíäíûé èíòåðïðåòàòîð ïîçâîëÿåò îñóùåñòâëÿòü íå òîëüêî ðàáîòó âðåæèìå äèàëîãà ñ ïîëüçîâàòåëåì, íî è âûïîëíåíèå ïðîãðàìì, íàçûâàåìûõ êîìàíäíûìè ôàéëàìè (ñêðèïòàìè).
Ôàéë ñ ïðîãðàììîé, ïðåäíàçíà÷åííîé äëÿèñïîëíåíèÿ èíòåðïðåòàòîðîì Bourne Shell, äîëæåí íà÷èíàòüñÿ ñî ñòðîêè#!/bin/shßçûê Bourne Shell ïîääåðæèâàåò ðàáîòó ñ ïåðåìåííûìè. Èìåíà ïåðåìåííûõ ñîñòîÿò èç ëàòèíñêèõ áóêâ, öèôð, çíàêà ïîä÷åðêèâàíèÿ è íà÷èíàþòñÿâñåãäà ñ áóêâû. Ïåðåìåííàÿ ìîæåò èìåòü çíà÷åíèåì ëþáóþ ñòðîêó ñèìâîëîâ. ×òîáû ïðèñâîèòü ïåðåìåííîé çíà÷åíèå, íåîáõîäèìî íàïèñàòü îïåðàòîðïðèñâàèâàíèÿ, íàïðèìåð:I=10MYFILE=/tmp/the_file_nameMYSTRING="Here are several words"Îáðàòèòå âíèìàíèå, ÷òî â èìåíè ïåðåìåííîé, à òàêæå âîêðóã çíàêà ðàâåíñòâà (ñèìâîëà ïðèñâàèâàíèÿ) íå äîëæíî áûòü ïðîáåëîâ, â ïðîòèâíîì ñëó÷àåêîìàíäà áóäåò ðàñöåíåíà íå êàê ïðèñâàèâàíèå, à êàê îáû÷íàÿ êîìàíäà, â êîòîðîé çíàê ïðèñâàèâàíèÿ − îäèí èç ïàðàìåòðîâ.Äëÿ îáðàùåíèÿ ê ïåðåìåííîé èñïîëüçóåòñÿ çíàê $, íàïðèìåð:$ echo $I $MYFILE $MYSTRING ðåçóëüòàòå âûïîëíåíèÿ ýòîé êîìàíäû áóäåò íàïå÷àòàíî:4 Îò5 Îòàíãëèéñêîãî background − ôîíàíãëèéñêîãî foreground5210 /tmp/the_file_name Here are several wordsÏðè íåîáõîäèìîñòè ñêîìïîíîâàòü ñëèòíûé òåêñò èç çíà÷åíèé ïåðåìåííûõìîæíî èìåíà ïåðåìåííûõ çàêëþ÷àòü â ôèãóðíûå ñêîáêè, íàïðèìåð:$ echo ${I}abcÝòà êîìàíäà íàïå÷àòàåò:10abcÄëÿ âûïîëíåíèÿ àðèôìåòè÷åñêèõ äåéñòâèé èñïîëüçóåòñÿ çíàê $(( )).