ZACHEM NAM NUZHNA PROGRAMMA lrgf? Kak obsuzhdalos' ranee, nam neobhodimo znat', chto proishodit, kog- da UNIX dostigaet kakih-to predelov. Ne tol'ko predelov razmera fajla, a lyubyh predelov. Primerami predel'nyh znachenij yavlyayutsya kolichestvo processov, kotorye vy mozhete zapustit', obshchee kolichestvo processov v sisteme, kolichestvo fajlov, kotorye vam razresheno otkryt', kolichestvo svobodnyh blokov, kolichestvo indeksnyh deskriptorov, glubina vlozhen- nosti katalogov, pri kotoroj eshche vozmozhna rabota, i t.d. Nam nuzhna programma, sozdayushchaya fajl maksimal'nogo razmera. Zatem my mozhem ispol'zovat' etot fajl dlya proverki razlichnyh predelov, imeyu- shchih otnoshenie k fajlam. CHTO DELAET lrgf? Lrgf - eto programma, kotoraya sozdaet fajl maksimal'no vozmozhnogo razmera. Vypolnyaetsya eto putem zapisi v fajl do teh por, poka komanda zapisi ne okonchitsya neudachej. |to oznachaet, chto v dannyj fajl bol'she nel'zya zapisat' dannye, i on dostig granicy. Pri vyzove programma lrgf vyvodit soobshchenie, soderzhashchee obshchee ko- lichestvo bajtov, kotoroe vy mozhete zapisat' v fajl. |to znachenie vy- chislyaetsya po znacheniyu ulimit, poetomu ono raznoe dlya raznyh pol'zova- telej i zavisit ot shell, s kotorym pol'zovatel' sejchas rabotaet. Zatem u vas zaprashivaetsya imya fajla. Vy mozhete ukazyvat' lyuboe imya, dlya kotorogo vy imeete prava zapisi. Odnim iz sposobov proverki zhestkogo diska yavlyaetsya zapis' odnogo iz takih bol'shih fajlov v kazhdyj razdel diska i zatem proverka otdel'nyh fajlovyh sistem. Posle zapuska programmy vy uvidite stroku s soobshcheniem, kotoroe postoyanno obnovlya- etsya. Ono soderzhit obshchee chislo zapisannyh blokov i kolichestvo bajtov, kotoroe zapisyvalos' pri kazhdoj popytke zapisi. Programma lrgf zapisy- vaet v fajl kazhdyj raz po 1024 bajta. V zavisimosti ot vashego znacheniya ulimit kolichestvo bajtov, dopisyvaemyh v konec fajla, mozhet ne byt' ravnym v tochnosti 1 Kb. Vyhodnoe soobshchenie postoyanno pechataetsya v od- noj i toj zhe stroke, zamenyaya na ekrane staroe znachenie. |to dostiga- etsya putem vyvoda tol'ko simvola vozvrata karetki, a ne perevoda stro- ki. Kogda programma ne mozhet bol'she zapisyvat' dannye v fajl, itogo- voe kolichestvo blokov vyvoditsya na ekran. |to obshchee chislo blokov, za- pisannyh v fajl. PRIMERY 1. $ lrgf /dev/rfd0 Vvod imeni ustrojstva v otvet na zapros imeni fajla, v kotoryj budet proizvodit'sya zapis'. Pri etom programma lrgf vypolnyaet posledo- vatel'nuyu zapis' na gibkij disk nestrukturirovannyh dannyh. Tem samym proveryaetsya, raspoznaet li drajver ustrojstva perepolnenie gibkogo diska. |to vazhno znat' pri rabote s komandoj cpio, kotoraya predpolaga- et, chto drajver ustrojstva soobshchit ob ostanovke i zaprose sleduyushchej diskety. 2. $ lrgf /usr/tmp/lrg Sozdanie fajla v fajlovoj sisteme /usr. Bol'shinstvo sistem XENIX ispol'zuyut katalog /usr kak otdel'nuyu fajlovuyu sistemu, otlichnuyu ot kornevoj. Sozdaniem fajla v kataloge /usr /tmp my mozhem proverit' po- lozhenie del v etoj chasto ispol'zuemoj fajlovoj sisteme. 3. $ lrgf /tmp/lrg V dannom sluchae sozdavaemyj fajl zajmet mesto v kornevoj fajlovoj sisteme (esli vy ne imeete kataloga /tmp v vashej sobstvennoj fajlovoj sisteme). Potrebuetsya ne slishkom mnogo takih fajlov dlya zapolneniya vseh svobodnyh blokov v kornevoj fajlovoj sisteme. 4. $ lrgf /mnt/lrg Sozdanie fajla na gibkom diske v predpolozhenii, chto na gibkom diske imeetsya fajlovaya sistema i ona smontirovana v katalog /mnt. 5. $ F=0 $ while : > do > echo -r "--> Making file $F <--" > ./lrgf <<-! > $F > ! > echo > F=`expr $F + 1` > done Dannyj cikl zapuskaet programmu lrgf beskonechnoe chislo raz. Schet- chikom yavlyaetsya peremennaya F. Ona dolzhna byt' predvaritel'no ustanovle- na v nul', chtoby shell rassmatrival ee kak chislo, a ne kak simvol'nuyu stroku. Snachala vyvoditsya soobshchenie, soderzhashchee imya sozdavaemogo faj- la. Pervym imenem fajla yavlyaetsya 0. Programma lrgf zapuskaetsya, ispol'zuya v kachestve vhodnyh dannyh "dannyj dokument" (t.e. sam ko- mandnyj fajl). V kachestve otveta na vopros ob imeni fajla ispol'zuetsya znachenie $F. Znachenie peremennoj F uvelichivaetsya, i programma lrgf vy- zyvaetsya snova. Imenami fajlov yavlyayutsya 0, 1, 2 i t.d. |to prodolzha- etsya do teh por, poka ne ostanetsya bol'she svobodnogo mesta. Vryad li vy budete pol'zovat'sya etim chasto, no dlya testirovaniya eto prekrasnoe sredstvo zapolnit' vse svobodnoe prostranstvo. Esli vy hotite uvidet', chto delaet vasha sistema, kogda ischerpany svobodnye bloki, primenite dannyj komandnyj fajl. POYASNENIYA Stroki 3-6 vklyuchayut vse neobhodimye fajly zagolovkov. |ti fajly soderzhat opredeleniya i metki, neobhodimye dannoj programme. Stroki 8 i 9 opredelyayut razmery bufera dlya imen fajlov i bufera dlya zapisi na disk. Znachenie BSIZ mozhno podnastroit', esli programma rabotaet slishkom medlenno. U vas mozhet vozniknut' zhelanie uvelichit' BSIZ do 4096, chtoby proizvodilos' ne tak mnogo operacij zapisi. Stroka 11 opredelyaet vozvrashchaemoe znachenie sistemnogo vyzova ulimit kak dlinnoe celoe. Stroka 12 rezerviruet bufer, kotoryj dolzhen byt' zapisan. |tot bufer nahoditsya vne osnovnoj chasti programmy iz-za ogranichenij na razmer vnutri funkcij. V osnovnom bloke programmy nai- bol'shaya oblast' avtomaticheskoj pamyati, kotoruyu vy mozhete imet', ravna razmeru vashego steka. Vy mozhete sdelat' po-drugomu, ob®yaviv dannyj bu- fer kak staticheskuyu peremennuyu v funkcii main. My reshili vynesti ego za predely funkcii main i ne ob®yavlyat' kak staticheskuyu peremennuyu. Stroka 16 ob®yavlyaet nekotorye rabochie peremennye. Zametim, chto oni pomeshchayutsya v registry. |to sdelano dlya uskoreniya raboty programmy i polucheniya bolee kompaktnogo ob®ektnogo koda. Stroka 17 rezerviruet bufer, v kotoryj vy vvodite imya fajla. Stroki 19 i 20 zapolnyayut zapisyvaemyj bufer simvolami "x", poeto- mu posle sozdaniya fajla my mozhem ih tam uvidet'. Stroka 22 vyvodit znachenie ulimit dlya vashego processa. Obratite vnimanie, chto vyzov ulimit vozvrashchaet kolichestvo blokov, poetomu my dolzhny umnozhit' eto chislo na 512. V rezul'tate my poluchim obshchee koli- chestvo bajtov, kotoroe mozhet soderzhat' fajl. Stroki 24-26 zaprashivayut imya fajla, chitayut ego i podgotavlivayut ekran dlya sleduyushchego soobshcheniya. Stroki 28-32 otkryvayut fajl s ukazan- nym imenem dlya polucheniya deskriptora fajla. Fajl otkryvaetsya dlya za- pisi i chteniya, sozdaetsya pri neobhodimosti i obrezaetsya, esli on uzhe sushchestvuet. Esli operaciya otkrytiya fajla zakanchivaetsya neudachej, vyvo- ditsya soobshchenie ob oshibke, i programma zavershaetsya. Stroki 34-42 vypolnyayut zapis'. Cikl for beskonechen, poskol'ku v seredine operatora net proverki znacheniya schetchika. Peremennaya bcnt postoyanno uvelichivaetsya, poka vypolnyaetsya zapis'. Stroka 36 vypolnyaet zapis' v fajl. Esli zapis' neudachna, vyvo- ditsya soobshchenie ob oshibke i po operatoru break osushchestvlyaetsya vyhod iz cikla. Stroka 41 vyvodit kolichestvo vypolnennyh operacij zapisi i ko- lichestvo zapisannyh bajtov. Obratite vnimanie, chto dannyj operator print soderzhit vozvrat karetki (\r), a ne perevod stroki. |to pozvolya- et kursoru ostavat'sya v odnoj itemah. ekrane poverh staryh znachenij. |kran ne skrolliruetsya, chto udobno dlya nablyudeniya. Vypolnenie cikla prodolzhaetsya do teh por, poka sistemnyj vyzov write ne zakonchitsya neudachej i operator break ne prekratit cikl. Kogda eto proishodit, vypolnenie prodolzhaetsya so stroki 43, kotoraya pechataet "end of program". Vypolnenie komandy "ls -l" dlya zapisannogo fajla pokazyvaet, skol'ko bajtov imeet fajl maksimal'nogo razmera. |to kolichestvo dolzhno sovpadat' s chislom, kotoroe soobshchila vam programma lrgf. V dannoj glave predstavlena lish' nebol'shaya chast' vozmozhnyh islle- dovanij vnutrennej raboty fajlovyh sistem i ustrojstv v UNIX. Nekoto- rye iz predstavlennyh programm mogut byt' neprimenimy v vashej versii sistemy UNIX ili v vashej konfiguracii apparatnyh sredstv ili mogut vyglyadet' v vashej sisteme inache. Odnako obshchie principy sohranyayutsya, i vy mozhete ispol'zovat' rassmotrennye sredstva v kachestve osnovy dlya vashih sobstvennyh issledovanij.  * GLAVA 8. Kommunikacii v sisteme UNIX *  VVEDENIE FIZICHESKOE PODKLYUCHENIE PODKLYUCHENIE BEZ KOMMUNIKACIONNYH USTROJSTV DOSTUP MIKRO-|VM ILI TERMINALA K SISTEME UNIX PRYAMOE PODKLYUCHENIE DISTANCIONNOE PODKLYUCHENIE DOSTUP IZ SISTEMY UNIX K MIKRO-|VM OBNARUZHENIE MODEMOV V SISTEME ISPOLXZOVANIE I KONFIGURIROVANIE LINII IZMENENIE SKOROSTEJ OBMENA ZAHVAT DANNYH INSTRUMENTALXNYE SREDSTVA DLYA KOMMUNIKACIONNYH LINIJ cuchk - Cu check - proverka svobodnoj linii dlya cu talk - Obrashchenie k posledovatel'nomu portu DOSTUP IZ UNIX V UNIX SVYAZYVANIE UNIX-MASHIN OBLASTI DLYA PEREDAVAEMYH FAJLOV SETEVAYA BEZOPASNOSTX OGRANICHITELXNYE FAJLY OTLADKA KOMMUNIKACIJ uust Sostoyanie uucp i sluzhebnye dejstviya uutrans Peredacha fajlovyh derev'ev iz odnoj sistemy UNIX v druguyu sistemu UNIX KONFIGURACIONNYE RESHENIYA PODKLYUCHENIE UNIX K MODEMU I GLAVNOJ MASHINE PODKLYUCHENIE UNIX I TERMINALA K MODEMU PODKLYUCHENIE UNIX K TERMINALU, MODEMU I GLAVNOJ MASHINE SISTEMA UNIX, MIKRO-|VM I MODEM ALXTERNATIVNOE RESHENI TRI SISTEMY UNIX VVEDENIE V dannoj glave my rassmatrivaem sredstva kommunikacii v sisteme UNIX. V to vremya kak v mire MS-DOS kommunikacii ogranicheny obychno "chernym yashchikom" (programmnymi paketami i dovol'no standartnymi modemami), kommunikacii v sisteme UNIX bolee slozhny. UNIX predlagaet neskol'ko urovnej kommunikacij, vklyuchaya peredachu fajlov, udalennuyu registraciyu v sisteme, distancionnuyu pochtu i razvitye sistemy obmena soobshcheniyami, kotorye mogut svyazyvat' mezhdu soboj sotni sistem UNIX. Odnako, v bol'shinstve sistem UNIX net udobno oformlennyh, upravlyaemyh s pomoshch'yu menyu sredstv kommunikacii. Vmesto etogo imeyutsya slozhnye sistemnye komandy i neobhodimost' podderzhivat' mnogo fajlov. Obychno trebuetsya takzhe vladet' mnogimi podrobnostyami konfiguracii i ispol'zovaniya modemov. My predlagaem teoreticheskoe obosnovanie i prakticheskie rekomendacii, a takzhe instrumental'nye sredstva, kotorye pomogut vam osvoit' dannyj aspekt sistemy UNIX i obespechit' rabotosposobnost' kommunikacij v vashej sisteme. My rassmotrim ne tol'ko pryamuyu svyaz' mezhdu mashinami, no i svyaz' s udalennymi terminalami i modemami. Snachala my zajmemsya fizicheskimi soedineniyami, chto yavlyaetsya pervym etapom ustanovki linii svyazi. My rassmotrim model' interfejsa RS232-C i vyyasnim, kak podklyuchit' pryamuyu mezhmashinnuyu svyaz'. Zatem my obsudim obrashchenie k sisteme UNIX s mikro-|VM. Pogovorim o tom, kakie sushchestvuyut vidy protokolov i kakie iz nih luchshe ispol'zovat'. Dalee my rassmotrim, kak pol'zovat'sya modemom, chtoby vyzvat' iz UNIX drugie sistemy, naprimer doski ob®yavlenij i sistemy, otlichnye ot UNIX. Vy mozhete izuchit', kak najti vse modemnye soedineniya v sisteme, podklyuchit'sya k posledovatel'nomu portu i upravlyat' modemom. Pri obrashchenii k drugoj sisteme vy mozhete perehvatit' vse dannye, postupayushchie na vash terminal, i sohranit' ih v fajle dlya posleduyushchego ispol'zovaniya. Komandnye fajly (cuchk i talk), predstavlennye v dannom razdele, sledyat za dostupnost'yu linii svyazi i ustanavlivayut svyaz' s modemom. V zavershenie my rassmotrim svyaz' mezhdu sistemami UNIX s pomoshch'yu utility uucp. My uvidim, kak i kuda peredavat' fajly mezhdu sistemami, kak fajly zashchity dannyh upravlyayut sredoj uucp i izuchim sposoby otladki mehanizma peredachi fajlov s pomoshch'yu uucp. Zdes' predstavleny komandnye fajly uust dlya vypolneniya rutinnoj raboty po obsluzhivaniyu uucp i uutrans dlya kopirovaniya drevovidnoj struktury katalogov iz odnoj sistemy v druguyu. FIZICHESKOE PODKLYUCHENIE Bol'shinstvo mashin, na kotoryh rabotaet UNIX, imeyut odin ili neskol'ko posledovatel'nyh portov. |ti porty - glaza i ushi mashin, pozvolyayushchie sisteme svyazyvat'sya s vneshnim mirom. Ih mozhno ispol'zovat' dlya podklyucheniya lyubogo ustrojstva s interfejsom RS-232-C i dlya svyazi ili upravleniya. V dannom razdele my rassmotrim, kak podklyuchit' interfejs RS -232-C dlya obespecheniya svyazi tipa UNIX-UNIX, terminal-UNIX i modem-UNIX. Nachnem s rassmotreniya bazovoj modeli RS-232-C, pokazannoj na ris. 8-1. |ta model' illyustriruet, kak mogut obshchat'sya drug s drugom dve mashiny i/ili terminaly libo cherez modemy po telefonnym liniyam, libo po pryamoj (provodnoj) svyazi. Hotya posleduyushchee obsuzhdenie my vedem preimushchestvenno v terminah telefonnyh soedinenij, te zhe bazovye principy otnosyatsya i k pryamoj svyazi, za isklyucheniem togo, chto kommunikacionnye ustrojstva (DCE, data communication equipment) v etom sluchae ne nuzhny. Ris. 8-1. Standartnaya model' interfejsa RS-232-C ------------------------------------------------------------------- _||_ +-------+ 2 ***** _||_ ***** 2 +-------+ | |------>* *----\ || /----* *<------| | | DTE-1 | * DCE * \ || / * DCE * | DTE-2 | | |<------* * / || \ * *------>| | +-------+ 3 * *<---/ || \--->* * 3 +-------+ ***** || ***** ------------------------------------------------------------------- Na kazhdom konce nahodyatsya terminal'nye ustrojstva, nazyvaemye DTE (data terminating equipment). V roli DTE mozhet vystupat' terminal, naprimer, VT-100, ili central'nyj processor mikro-, mini- ili bol'shoj |VM. Kazhdoe terminal'noe ustrojstvo DTE dolzhno ispol'zovat' kommunikacionnoe ustrojstvo DCE, nazyvaemoe obychno modemom, dlya modulyacii i demodulyacii signalov, prohodyashchih po telefonnym liniyam. Kazhdoe DTE ispol'zuet vyvod nomer 2 dlya peredachi dannyh i vyvod nomer 3 dlya polucheniya dannyh. Poskol'ku to, chto peredano s vyvoda 2 na kazhdoj mashine, prinimaetsya na vyvode 3 drugoj mashiny, voznikaet perekreshchivanie telefonnyh linij mezhdu ustrojstvami DCE. Podsoedinenie i obrabotka signala mezhdu DTE i DCE polnost'yu sootvetstvuyut standartu RS-232-C. Apparatnyj protokol pozvolyaet DTE ispol'zovat' DCE dlya posylki i priema dannyh ot drugogo DTE. Kabel', svyazyvayushchij fizicheski DTE i DCE, nazyvaetsya "pryamolinejnym" kabelem. On pozvolyaet ustrojstvu DTE posylat' komandy (ili signaly s vyvodov) na DCE, a ustrojstvu DCE otpravlyat' komandy obratno na DTE. Podklyuchenie DCE odnoj mashiny k DCE drugoj mashiny proizvoditsya cherez obychnye telefonnye linii. Ustrojstva DCE neobhodimy po toj prichine, chto ustrojstva DTE yavlyayutsya cifrovymi, a telefonnye linii - analogovymi. Edinstvennyj sposob peredat' cifrovuyu informaciyu po analogovym liniyam - zakodirovat' cifrovuyu informaciyu v analogovyj signal, poslat' etot signal po telefonnym liniyam, a zatem dekodirovat' analogovyj signal obratno v cifrovuyu informaciyu. PODKLYUCHENIE BEZ KOMMUNIKACIONNYH USTROJSTV Esli vashi mashiny raspolozheny dovol'no blizko (v predelah 50 futov / 15 metrov. Odin fut sostavlyaet okolo 30.5 sm. - Primech. perev./), vam ne nuzhen modem, vy mozhete ispol'zovat' kabel' "nulevogo modema" vmesto DCE. Kabel' nulevogo modema imitiruet takoj zhe protokol, chto i DCE, no ne trebuet nalichiya modema dlya kommunikacij. Osnovnaya zadacha podklyucheniya nulevogo modema - obespechit' perekreshchivanie mezhdu peredayushchimi i prinimayushchimi signalami. Na ris. 8- 2 pokazana obshchaya shema podklyucheniya bez ustrojstv DCE. Ris. 8-2. Konfiguraciya s nulevym modemom ------------------------------------------------------------------- +-------+ 2 2 +-------+ | |------>... ...<------| | | DTE | 3 \./ 3 | DTE | | |<------.../ \...------>| | +-------+ +-------+ ------------------------------------------------------------------- Dlya togo chtoby vypolnit' podklyuchenie, imitiruyushchee DCE, trebuyutsya nekotorye manipulyacii s signalami. |ti manipulyacii takzhe standartizovany v kabele nulevogo modema. Po sheme etogo kabelya, pokazannoj na ris. 8-3, rassmotrim, kak on imitiruet signaly DCE. Ris. 8-3. Kabel' nulevogo modema RS-232-C ------------------------------------------------------------------- DTE-1 DTE-2 || || ZASHCHITNAYA ZEMLYA 1 ||-------------------------|| 1 (PROTECTIVE GROUND) || || || || SIGNALXNAYA ZEMLYA 7 ||-------------------------|| 7 (SIGNAL GROUND) || || || || PEREDACHA DANNYH 2 ||----------\ /----------|| 2 (TRANSMIT DATA) || . || PRIEM DANNYH 3 ||<---------/ \--------->|| 3 (RECEIVE DATA) || || || || ZAPROS PEREDACHI 4 ||----- -----|| 4 (REQUEST TO SEND) || | | || || | | || GASHENIE PEREDACHI 5 ||<----\ /---->|| 5 (CLEAR TO SEND) || \---\ /---/ || || . || IDET PEREDACHA DANNYH 8 ||<---------/ \--------->|| 8 (DATA CARRIER DETECT) || || || || GOTOVNOSTX NABORA DANNYH 6 ||<---------\ /--------->|| 6 (DATA SET READY) || . || GOTOVNOSTX TERMINALA 20 ||----------/ \----------|| 20 (DATA TERMINAL READY) || || || || ------------------------------------------------------------------- Linii 1 i 7 ispol'zuyutsya dlya shassi i signal'noj zemli sootvetstvenno. Linii 2 i 3 peresekayutsya takim obrazom, chtoby kogda odna storona govorit, drugaya slushala. Obe storony mogut govorit' odnovremenno (eto nazyvaetsya polnodupleksnym rezhimom), esli my ispol'zuem razlichnye nabory provodov. Dlya imitacii upravlyayushchih signalov linii 4, 5 i 8 podsoedinyayutsya tak, kak pokazano na ris. 8-3. Kazhdyj raz, kogda ustrojstvo DTE-1 aktiviziruet liniyu "Request to Send" ("Zapros peredachi"), t.e. peredaet po nej signal, ono poluchaet nazad signal "Clear to Send" ("Gashenie peredachi"), ukazyvayushchij, chto drugaya storona gotova prinyat' dannye. Zatem, posylaya signal po linii "Data Carrier Detect" ("Idet peredacha dannyh"), ustrojstvo DTE-1 soobshchaet drugoj storone, chto postupayut dannye. Takoe metodichnoe "apparatnoe rukopozhatie" garantiruet, chto nikakie dannye ne budut otpravleny, poka drugaya storona ne budet gotova ih prinyat'. Linii 6 i 20 podsoedinyayutsya tak, chtoby obespechit' poslednie upravlyayushchie signaly nulevogo modema. Poka DTE aktivno ("Data Terminal Ready" - "Gotovnost' terminala", liniya 20), drugaya storona schitaet, chto imeet delo s aktivnym modemom ("Data Set Ready" - "Gotovnost' nabora dannyh", liniya 6). Pri takom sposobe soedineniya linij 6 i 20 vsyakij raz, kogda vy vydergivaete vash kabel' iz mashiny ili pereklyuchaete ego na drugoj kanal soedinitel'noj korobki, drugaya storona teryaet vash signal aktivnosti i otklyuchaetsya (ili generiruet signal HUP - hangs up, povesit' trubku telefona). CHtoby sdelat' takoj kabel', kotoryj ne vyzyvaet otklyucheniya pri vynimanii shtepselya (t.e. NOHUP), prisoedinite vyhod "Data Terminal Ready" ko vhodu "Data Set Ready" na tom zhe ustrojstve DTE. |to zastavlyaet sistemu soobshchat' samoj sebe, chto modem vsegda gotov. Zametim, chto rassmotrennaya shema podklyucheniya nulevogo modema yavlyaetsya rekomenduemoj, no sushchestvuyut i drugie sposoby, poetomu ne dumajte, chto vse nulevye modemy odinakovy. V kazhdom konkretnom sluchae dlya nulevyh modemov uchityvaetsya opredelennoe okruzhenie ili funkciya, naprimer nalichie bezobryvnogo (nohup) varianta podklyucheniya. Teper', kogda my znaem dva razlichnyh sposoba soedineniya mashin, my mozhem rassmotret' sposoby kommunikacij i tipy podklyucheniya, kotorye mogut nam prigodit'sya. DOSTUP MIKRO-|VM ILI TERMINALA K SISTEME UNIX V etom razdele my rassmotrim razlichnye sposoby obshcheniya mikro-|VM i avtonomnyh terminalov s sistemoj UNIX. My predpolagaem, chto odno ustrojstvo DTE rabotaet ne pod upravleniem UNIX i obrashchaetsya k drugomu ustrojstvu, upravlyaemomu sistemoj UNIX. PRYAMOE PODKLYUCHENIE V prostejshem sluchae imeetsya terminal ili mikro-|VM, podsoedinennye neposredstvenno k sisteme UNIX. |to ochen' chasto vstrechaetsya v sistemah razrabotki, kogda UNIX ispol'zuetsya v kachestve kross-kompilyatora, a rezul'tiruyushchij kod zagruzhaetsya v mikro-|VM. Drugaya situaciya - kogda terminaly nahodyatsya na rabochih stolah sotrudnikov i primenyayutsya dlya vypolneniya bumazhnoj raboty, otpravki pochty, pechati dokumentov i t.d. Tipichnye konfiguracii s pryamym podsoedineniem pokazany na ris. 8-4. Obychnyj scenarij podklyucheniya terminala vyglyadit primerno takim obrazom. Pol'zovatel' s pomoshch'yu terminala, naprimer DEC VT-100, registriruetsya v sisteme UNIX po pryamoj svyazi. Terminal'noe ustrojstvo DTE dolzhno byt' ustanovleno v sootvetstvii s pravil'noj vnutrennej konfiguraciej, vklyuchaya skorost' v bodah, startovye i stopovye bity, chislo bitov dannyh i chetnost'. |to obychnye ustanovki terminala, kotorye mozhno zadat' libo tumblernymi pereklyuchatelyami, libo pri pomoshchi terminal'noj mikroprogrammy "SETUP". Mikro-|VM, v otlichie ot terminala, dolzhna zapustit' nekotoroe kommunikacionnoe programmnoe obespechenie dlya korrektnogo upravleniya apparaturoj. |ti programmy obychno snabzheny menyu ili kakim-to drugim sposobom ukazaniya parametrov - takih zhe, kak u terminalov. Dejstvitel'no, imeyutsya programmnye pakety, obespechivayushchie polnuyu ili pochti polnuyu emulyaciyu populyarnyh terminalov, takih kak VT-100. Kommunikacinnoe programmnoe obespechenie, ispol'zuemoe vami, ustanavlivaetsya ne special'no dlya UNIX, a dlya obrabotki signalov RS-232-C, kotorye obychno ne zavisyat ot togo, pryamoe li podsoedinenie ili cherez modem. Ris. 8-4. Pryamoe podklyuchenie terminalov i mikro-|VM k UNIX --------------------------------------------------------------------- DTE-1 DTE-2 DEJSTVIE DEJSTVIE +----------+ +--------+ Mikroprogramma | | Nulevoj modem| | getty 9600 tty00 SETUP | terminal |--------------| tty00 | login imya_pol'z | | | | sh +----------+ | | | UNIX | +----------+ | | Kommunikacionnoe | | Nulevoj modem| | programmnoe | mikro-|VM|--------------| tty01 | obespechenie | | | | +----------+ +--------+ --------------------------------------------------------------------- V kachestve kabelya, soedinyayushchego terminal (ili mikro-|VM) s sistemoj UNIX, nuzhno ispol'zovat' nulevoj modem. Kogda kommunikacionnoe ustrojstvo DCE otsutstvuet, primenyaetsya kabel' nulevogo modema. V sisteme UNIX na terminal'nom ustrojstve DTE dolzhna byt' utilita getty (chto pervonachal'no oznachalo "get teletype" - dostup k teletajpu), kotoraya rabotaet s opredelennym portom i obnaruzhivaet moment, kogda kto-to pytaetsya zaregistrirovat'sya v sisteme. Programma getty (opisannaya v init(M) i getty(M)) vyvodit podskazku "login:" i chitaet simvoly, postupayushchie po linii. Pri pryamom podklyuchenii process getty mozhet rabotat' so skorost'yu 9600 bod, poetomu pol'zovateli mogut poluchit' vyigrysh ot primeneniya etoj skorosti. |to znachitel'no bystree, chem 1200 ili inogda 2400 bod - skorostej, kotorye ispol'zuyutsya chashche vsego pri rabote s obychnymi telefonnymi liniyami. V zavisimosti ot togo, kak ustanovlen fajl gettydefs, vy mozhete obychno izmenit' skorost' raboty getty, nazhimaya klavishu break. Klavisha break generiruet ne simvol, a signal v liniyu, kotoryj dlitsya opredelennyj interval vremeni. Drajvery ustrojstv v sisteme UNIX raspoznayut etot signal i dejstvuyut sootvetstvuyushchim obrazom. Rassmotrenie samogo metoda, s pomoshch'yu kotorogo getty rabotaet na razlichnyh skorostyah, vyhodit za predely dannoj knigi. Vazhno znat', chto esli getty rabotaet na skorosti 9600 bod, a vy ispol'zuete terminal, ustanovlennyj na 1200 bod, to vam nuzhno prokrutit' pereklyuchenie skorostej getty s 9600 bod cherez vse promezhutochnye skorosti do dostizheniya znacheniya 1200 bod. Derzhite klavishu break nazhatoj do teh por, poka getty ne ustanovitsya na nuzhnuyu vam skorost'. Sleduyushchij primer vzyat iz fajla gettydefs v OC XENIX System V i pokazyvaet, kak svyazany mezhdu soboj skorosti obmena. -------------------------- | 5# B9600 PARENB CS7 OPOST ONLCR # B9600 SANE IXANY #Login: #1 | 4# B4800 PARENB CS7 OPOST ONLCR # B4800 SANE IXANY #Login: #5 | 3# B2400 PARENB CS7 OPOST ONLCR # B2400 SANE IXANY #Login: #4 | 2# B1200 CS8 OPOST ONLCR # B1200 SANE IXANY #Login: #3 | 1# B300 CS7 OPOST ONLCR # B300 SANE IXANY #Login: #2 | Zdes' ukazanie #5 v fajle inittab (ili v fajle ttys dlya pol'zovatelej XENIX i System III) porozhdaet process getty, rabotayushchij na skorosti 9600 bod. Esli vy nazhimaete klavishu break, sleduyushchim po poryadku yavlyaetsya nomer 1 (kak ukazano v konce stroki nomer 5). Esli vy nazhimaete break eshche raz, to sleduyushchej yavlyaetsya stroka nomer 2, i t.d. Esli vy nazhmete break dostatochnoe kolichestvo raz, skorost' getty vernetsya po ciklu k znacheniyu 9600 bod. Vsya posledovatel'nost' dejstvij, svyazannyh s registraciej v sisteme, vyglyadit primerno tak. Snachala init porozhdaet process getty (iniciiruemyj iz fajla /etc/inittab) na opredelennom nomere terminala i s opredelennoj skorost'yu. Pri etom ustanavlivayutsya harakteristiki linii i vydaetsya registracionnaya podskazka. Kogda pol'zovatel' vvodit registracionnoe imya, getty proveryaet ego na pravil'nost', a zatem vypolnyaet programmu login. Login zaprashivaet parol', zashifrovyvaet ego i sveryaet s zashifrovannym parolem v fajle /etc/passwd. Esli paroli sovpadayut, login zapuskaet process shell, kotoryj pechataet shell-podskazku i chitaet vashi komandy, postupayushchie s terminala. Kakoj imenno shell budet zapushchen - opredelyaetsya zapis'yu v fajle parolej, sootvetstvuyushchej dannomu registracionnomu imeni. Moemu registracionnomu imeni sootvetstvuet takaya zapis': russ:j9egLecqEpXLg:201:51:Russ Sage:/usr/russ:/bin/shV V etom sluchae zapuskaetsya System V shell, odin iz novyh shell-interpretatorov firmy AT&T. DISTANCIONNOE PODKLYUCHENIE Al'ternativoj pryamomu podklyucheniyu yavlyaetsya distancionnoe podklyuchenie cherez modemnuyu liniyu, pokazannoe na ris. 8-5. Ustanovka terminala ili konfigurirovanie mikro-|VM vyglyadyat primerno tak zhe, kak i v predydushchem sluchae, za isklyucheniem skorosti obmena, na kotoroj rabotaet terminal. Dlya bol'shinstva modemov ona dolzhna ravnyat'sya 1200 bodam. Ris. 8-5. Distancionnoe podklyuchenie terminalov i mikro-|VM k UNIX --------------------------------------------------------------------- DEJSTVIE Komandy modema DTE-1 DTE-2 +----------+ ***** +--------+ | | pryamoj * * | | | terminal |-------* modem *\ | | | | kabel' * * \ ***** | UNIX | +----------+ ***** \ _||_ * * pryamoj | | \ _||_ ---* modem *-------| tty00 | / || * * kabel' | | +----------+ ***** / || ***** | | | | pryamoj * * / +--------+ | mikro-|VM|-------* modem */ getty 1200 tty00 | | kabel' * * login imya_pol'z +----------+ ***** sh Kommunikacionnoe obespechenie, komanda nabora telefonnogo nomera --------------------------------------------------------------------- Terminal (kogda on ustanovlen na 1200 bod) obshchaetsya neposredstvenno s modemom. Pri etom zadejstvovany modemnye komandy "nabrat' telefonnyj nomer" (dial), "povesit' trubku" (hang up) i t.d. Mikro-|VM, zapuskayushchaya kommunikacionnoe programmnoe obespechenie, obychno imeet komandu nabora nomera, kotoraya generiruet komandu dlya modema. Soedinenie mezhdu terminalom/mikro-|VM i modemom dolzhno byt' vypolneno v vide pryamolinejnogo kabelya. Modem imeet takzhe telefonnyj kabel', idushchij v telefonnuyu sistemu. Poskol'ku my imeem delo s UNIX, posledovatel'nost' dejstvij pri registracii v sisteme takaya zhe, kak i rassmotrennaya ranee, za isklyucheniem togo, chto getty iniciiruetsya obychno so skorost'yu 1200 bod, chtoby sootvetstvovat' skorosti modema. Esli getty imeet druguyu skorost', pereklyuchite ee s pomoshch'yu klavishi break na znachenie 1200 bod. Kak tol'ko vse dejstviya po konfigurirovaniyu zaversheny, terminal ili mikro-|VM mozhet svyazat'sya s sistemoj UNIX. Kak eto sdelat'? Pri registracii pol'zovatelya v sisteme struktura dannyh termcap ispol'zuetsya dlya podderzhki upravleniya ekranom. Esli u vas eshche net zapisi v fajle termcap, obratites' k predydushchej glave, gde opisano, kak podgotovit' takuyu zapis'. Terminaly (poskol'ku obychno oni yavlyayutsya prosto apparaturoj) ne slishkom gibki i druzhestvenny po otnosheniyu k pol'zovatelyu. Oni ne obladayut shirokim spektrom vozmozhnostej pomimo registracii v sisteme i zapuska nekotoryh programm. Mikro-|VM, s drugoj storony, imeyut bol'shuyu gibkost' i mogut mnogoe dobavit' k pol'zovatel'skomu interfejsu s sistemoj UNIX. Kommunikacionnye programmy imeyut obychno bufer pamyati s pryamoj adresaciej (RAM), kotoryj vy mozhete ispol'zovat' dlya togo, chtoby zahvatit' dannye i pomestit' ih na disk. Blagodarya primeneniyu etogo bufera, vy mozhete izbavit'sya ot neobhodimosti ispol'zovat' special'nye komandy UNIX dlya peredachi fajlov. Vy mozhete dat' komandu vklyucheniya zahvata dannyh, zatem otobrazit' fajl na ekran (ispol'zuya, naprimer, komandu cat ili prosmatrivaya fajl redaktorom), esli tol'ko etot fajl ne slishkom bol'shoj dlya bufera. Sleduet imet' v vidu, odnako, chto programmnye fajly ili drugie fajly, trebuyushchie stoprocentnoj tochnosti pri peredache, nuzhno peredavat' s yavnym ispol'zovaniem protokola proverki oshibok, poskol'ku telefonnye linii ili dazhe pryamoe podklyuchenie mogut vnosit' "shumy" i odin nevernyj simvol mozhet sdelat' programmu bespoleznoj. Nekotorye protokoly, podderzhivaemye v mire mikro-|VM, prisposobleny k mashinam s sistemoj UNIX, naprimer programmy xmodem i kermit. Iz etih dvuh protokolov xmodem bolee shiroko rasprostranen v mire mikro-|VM i podderzhivaetsya pochti vsemi sistemami tipa dosok ob®yavlenij. Kermit ochen' populyaren v mire UNIX, imeet rastushchuyu populyarnost' v mire mikro-|VM i dostupen pochti dlya kazhdoj modeli mikro-|VM za cenu, nemnogim bol'shuyu stoimosti diska. Ispol'zuya eti protokoly, mikro-|VM mozhet posylat' i prinimat' fajly iz sistemy UNIX, i vam ne nuzhno zabotit'sya o kontrole oshibok pri peredache dannyh. CHtoby podrobnee uznat' ob etih protokolah, prokonsul'tirujtes' u administratorov vashej sistemy UNIX i u pol'zovatelej mikro-|VM, imeyushchih te zhe problemy. DOSTUP IZ SISTEMY UNIX K MIKRO-|VM Obratnaya situaciya, v otlichie ot tol'ko chto rassmotrennoj, sostoit v obrashchenii iz sistemy UNIX k sisteme, otlichnoj ot UNIX, funkcioniruyushchej na mikro-|VM ili na bol'shoj mashine. Dlya togo chtoby eto sdelat', neobhodimo znat', kak poluchit' dostup k posledovatel'nomu portu, kakuyu komandu modema ispol'zovat' dlya nabora telefonnogo nomera, kak zaregistrirovat'sya v toj sisteme, v kotoruyu my obrashchaemsya. Model' etoj situacii pokazana na ris. 8-6. Terminal'noe ustrojstvo DTE-1, t.e. sistema UNIX, ispol'zuet pryamoj kabel' dlya podklyucheniya modema. Dlya posledovatel'noj linii, kotoroj v nashem primere yavlyaetsya tty00, ne nuzhno zapuskat' process getty. Programma getty nuzhna tol'ko dlya registracii v sisteme, a ne dlya obrashcheniya k drugoj sisteme. Posledovatel'nym portom UNIX-mashiny upravlyaet programma cu. Sistema, otlichnaya ot UNIX, imeet registracionnuyu posledovatel'nost' nekotorogo vida. Esli vy obrashchaetes' k mikro-|VM, na kotoroj funkcioniruet programmnoe obespechenie tipa doski ob®yavlenij, to sistema, otlichnaya ot UNIX, obychno zaprashivaet vashe imya, gorod i t.d., a takzhe parol'. (Obychno vy mozhete zaregistrirovat'sya kak novyj pol'zovatel' i zavesti parol', no eto zavisit ot konkretnoj doski ob®yavlenij.) Esli drugoj sistemoj yavlyaetsya bol'shaya mashina, to ee registracionnuyu posledovatel'nost' nuzhno znat' zaranee. Kak uzhe otmechalos', osnovnoj programmoj, kotoruyu predostavlyaet UNIX dlya obrashcheniya k drugoj sisteme, yavlyaetsya cu(1), chto oznachaet "call unix" ("vyzvat' UNIX"). Na praktike, kak i v nashem primere, drugaya sistema ne obyazana byt' sistemoj UNIX, poetomu etu programmu bylo by bolee pravil'no harakterizovat' kak "podklyuchenie k UNIX-portu". Ris. 8-6. Obrashchenie UNIX k sisteme, otlichnoj ot UNIX ------------------------------------------------------------------- DTE-1 DTE-2 +--------+ +------+ | | ***** _||_ ***** | | | UNIX | pryamoj * * _||_ * * pryamoj | Ne | | |-------* modem *-- || --* modem *-------| UNIX | | tty00 | kabel' * * || * * kabel' | | | | ***** || ***** | | +--------+ +------+ DEJSTVIE DEJSTVIE Vmesto komandy getty tty00 Specificheskaya komanda cu -ltty00 dir registracionnaya posledovatel'nost' ------------------------------------------------------------------- Programma cu otkryvaet posledovatel'nyj port i pomeshchaet "fajl zanyatosti" ("lock file") v katalog /usr/spool/uucp. Prisutstvie etogo fajla zanyatosti prosto oznachaet, chto port zadejstvovan, i prepyatstvuet dostupu k nemu drugih pol'zovatelej. Vy imeete pravo isklyuchitel'nogo dostupa do teh por, poka ne vyjdete iz programmy cu i ne otdadite etot port komu-nibud' drugomu. Pri vyzove utility cu nachinayut rabotat' dva processa: chitatel' (kotoryj chitaet iz posledovatel'nogo porta) i pisatel' (kotoryj pishet v posledovatel'nyj port). Kogda vy vvodite simvoly dlya programmy cu, ona proveryaet nalichie sredi nih special'nyh simvolov, na kotorye ona dolzhna reagirovat'. Obychno cu srazu reagiruet na special'no prednaznachennye ej komandnye simvoly. Ostal'nye simvoly peredayutsya cherez posledovatel'nyj port drugoj storone. Pomimo peredachi simvolov vpered i nazad, programma cu predostavlyaet mnogie funkcii, analogichnye funkciyam kommunikacionnogo paketa mikro-|VM. OBNARUZHENIE MODEMOV V SISTEME Esli vy rabotaete na bol'shoj mashine, vam nuzhno vyyasnit', kakie porty v vashej sisteme podsoedineny k modemu i vneshnej linii. Esli vy administrator, to vy dolzhny znat', kak skonfigurirovat' eti linii. Nachinat' nuzhno s fajla /usr/lib/uucp/L-devices. |to osnovnoj fajl, opredelyayushchij, kakie porty ispol'zuyutsya i kakim obrazom oni ispol'zuyutsya. Vot primer raspechatki s informaciej o portah: --------------------- | | ACU cul0 cua0 1200 | DIR tty00 0 300 | DIR tty00 0 1200 | DIR tty00 0 2400 | DIR tty00 0 4800 | DIR tty00 0 9600 | V fajle L-devices kazhdyj port opredelyaetsya libo kak pryamoe podklyuchenie (DIR - direct connection), libo kak special'noe ustrojstvo, nazyvaemoe ustrojstvom avtomaticheskogo vyzova (ACU - automatic call unit). Ob ustrojstvah vyzova my pogovorim pozzhe. Sejchas nam nuzhno rassmotret' tol'ko zapisi tipa DIR. Programma cu ispol'zuet zapisi tipa pryamogo podklyucheniya, a uucp - tipa ACU. Teper' ochen' prosto identificirovat' kazhdyj posledovatel'nyj port: kak k nemu obrashchat'sya, na kakoj skorosti on rabotaet i mozhem li my osushchestvit' vyzov cherez etot port. Dannye fajla L-devices pokazyvayut, naprimer, chto posledovatel'nyj port tty00 ispol'zuetsya kak liniya pryamogo vyzova. Vam razreshaetsya ispol'zovat' dlya vyzova cherez etot port skorosti ot 300 do 9600 bod. |to polnyj diapazon ispol'zuemyh obychno skorostej obmena, prichem bolee vysokie skorosti primenyayutsya dlya pryamogo podklyucheniya k drugim mashinam, a ne k modemu. A kak naschet modemnyh linij, kotorye VHODYAT v mashinu? Dlya togo chtoby ih najti, nuzhno posmotret' katalog /etc. Tam dva fajla dialin i dialup opredelyayut, na kakih liniyah tty primenyaetsya vtorichnaya registracionnaya parol'naya posledovatel'nost' dlya udalennyh pol'zovatelej. |ti linii tty prednaznacheny tol'ko dlya obrashcheniya izvne v dannuyu sistemu i obychno ne mogut byt' ispol'zovany dlya dostupa iz etoj sistemy vo vneshnij mir. ISPOLXZOVANIE I KONFIGURIROVANIE LINII Teper', kogda my znaem, po kakoj linii osushchestvit' vyzov, nam neobhodima komanda vyzova. V poslednih versiyah System V utilita cu bolee razvita, chem v predydushchih versiyah. Nam, kak pravilo, ne nuzhny osobo moshchnye vozmozhnosti, poetomu nashi komandnye stroki dovol'no prosty i smogut rabotat' prakticheski s lyubym variantom programmy cu. K osnovnym vozmozhnostyam, kotorye my imeem, otnosyatsya: vybor nomera linii (t.e. ustrojstva tty), skorosti funkcionirovaniya i podklyuchat'sya li k ustrojstvu napryamuyu dlya ruchnogo nabora nomera libo zhe nabirat' nomer avtomaticheski. Samyj prostoj sposob - chtoby nomer nabirala programma cu, no esli eto nevozmozhno, to vy dolzhny podklyuchit'sya neposredstvenno k modemu. Sleduyushchij primer pokazyvaet, kak neposredstvenno podklyuchit'sya k ustrojstvu i vruchnuyu upravlyat' modemom s cel'yu nabora nomera. V dannom sluchae ispol'zuetsya dovol'no shiroko rasprostranennyj modem Hayes 1200 Smartmodem. Esli u vas modem, kotoryj ne yavlyaetsya "Hayes-sovmestimym", to vy dolzhny najti ekvivalentnye upravlyayushchie posledovatel'nosti v vashej dokumentacii. $ cu -ltty00 dir # Poluchit' pryamoj dostup k terminal'noj # linii so skorost'yu 1200 bod Connected # Otzyv programmy cu ATdt555-1212 # Vnimanie modemu, ustanovka svyazi putem # nabora sleduyushchego nomera CONNECT # Modem podtverzhdaet fakt podklyucheniya # Otpravka vozvrata karetki v sistemu-adresat Welcome to Micro BBS # Poluchenie privetstviya ot mikro-|VM . . vypolnenie seansa raboty s udalennoj sistemoj . . exit # Vyjti iz mikro-sistemy ILI, +++ # esli vy etogo ne hotite, vremenno # vyjti iz modemnogo podklyucheniya # (po komande escape, a ne exit) OK # Otvet modema na vremennyj vyhod ATh0 # Poprosit' modem zanyat' telefon OK # Otvet modema ~. # Zavershit' rabotu s cu Dlya togo chtoby ukazat' programme cu avtomaticheskij nabor nomera, ispol'zujte drugoj sintaksis v komandnoj stroke. My primenyaem ustrojstvo avtomaticheskogo vyzova ACU dlya togo, chtoby sdelat' vyzov. Fakticheskaya komanda nabora nomera generiruetsya programmoj /usr/lib/uucp/dial. Primer vyzova vyglyadit tak: $ cu -acua0 555-1212 IZMENENIE SKOROSTEJ OBMENA Modemy tipa Smartmodem mogut rabotat' so skorostyami 300 i 1200 bod. Po umolchaniyu, programma cu podklyuchaetsya k posledovatel'nomu portu na skorosti 1200 bod. Esli vy podklyuchaetes' s ispol'zovaniem umolchanij, prover'te skorost', vremenno vyjd