| |
|
 |
|
Terminál és Unix alapok II.
Az első részben létrehoztunk
egy teszt nevű felhasználót akinek
nincsenek adminisztrátori
jogosultságai annak érdekében,
hogy biztonságosan tudjunk
gyakorolni. Beállítottuk azt is,
hogy ennek az új felhasználónak
a neve és egy kettőspont
látható a terminál ablakban,
amikor az arra vár, hogy kívánságunkat
teljesítse. Érdemes
megszokni, hogy gyakorláskor
átjelentkezünk a su paranccsal
a teszt felhasználó területére,
annak ellenére, hogy ebben a
részben inkább érdekes, mint
veszélyes területekre kirándulunk.
Legyen ez kedvcsináló a
további ismerkedésre!
A DUMAGÉP
A Macintosh régóta híres beszédességéről
és jelenleg is
számos widget és más programok
is léteznek, amelyek képesek
szövegek felolvasására. A
terminálban ez egy nagyon kézenfekvő
lehetőség, csak be
kell írni a say parancsot és a
kívánt szöveget:
teszt: say almalap
Ha nincs lekapcsolva a hangerő,
máris kedvenc lapunk nevét
halljuk, bár kicsit tört magyarsággal.
Angol szövegekkel
nyílván jobbal boldogul.
Ha az f opcióval megadjuk
egy szöveges fájl nevét, akkor
annak tartalmát fogja felolvasni:
"say -f fájl-neve". Ha
az o opciót adjuk meg, akkor
egy hangfájlba menthetjük el a
felolvasott szöveget:
teszt: say -o teszt.aiff Olvasom a lapot
Ezt könnyen ellenőrizhetjük,
írjuk be a következő parancsot:
teszt: open .
ennek segítségével kinyitunk
egy Finder ablakot (az open
parancs után egy szóköz karaktert
kell írni a pont előtt) és a
grafikus, megszokott környezetben
meggyőződhetünk róla,
hogy valóban ott van egy
teszt.aiff nevű hangfájl, amit
rögtön vissza is hallgathatunk!
AZ IDŐUTAZÓ
Milyen nap volt 1999. január
10-én? Szeretnénk gyorsan választ
kapni erre a kérdésre, de
éppen nincs kéznél egy 1999-es naptár. Persze ott van a grafikus
iCal program amit megnyitunk,
majd kattintgatunk
egy párat és megkapjuk a választ.
Egy picit gyorsabb, ha
beírjuk a következő parancsot a
terminálban:
teszt: cal 1 1999

és máris látható, hogy a keresett
nap vasárnap volt. Ha
csak a cal parancsot írjuk be,
akkor az aktuális hónap napjait
mutatja, ha csak egy számot
írunk a cal parancs után, akkor
azt évként értelmezi, tehát a
"cal 3006" parancs eredményeképpen
a 3006-os év naptára
varázsolódik az ablakba,
ha
pedig két számot adunk meg,
akkor az elsőt a hónap sorszámának,
a másodikat pedig az év
sorszámának tekinti. Ha az első
szám 1-nél kisebb, vagy 12-nél
nagyobb, akkor udvariasan figyelmeztet,
hogy 1 és 12 közötti
értéket illene megadnunk.
Az évek számát pedig 1 és 9999
között várja! Végül még egy érdekesség:
ha a j opciót is megadjuk,
akkor a napokat január
1-től kezdve sorszámozza, tehát
pl. a "cal -j 4 2006" parancsot
beírva, könnyen leolvasható,
hogy idén április utolsó
napja az év 120. napja.

A date parancs kiírja az aktuális
dátumot és időpontot.
Az első részben láttuk, hogy a
nagyobb jel segítségével parancsok
kimenetét át lehet irányítani
például egy fájlba. Próbáljuk
ki:
teszt: date > idopont
majd ellenőrizzük a cat paranccsal
az idopont nevű fájl
tartalmát. Már láttuk, hogy az
átirányítás kérdezés nélkül felülírja
egy létező fájl tartalmát!
Ha a fenti parancsot többször
kiadjuk, akkor az idopont fájl
tartalma mindig az az időpont
lesz, amikor utoljára kiadtuk a
parancsot.
Természetesen van arra lehetőség,
hogy megőrizzük a korábbi
dátumokat is! Ha a nagyobb
jelet megduplázzuk, akkor
az aktuális parancs eredménye
hozzáíródik a megadott
fájlhoz, tehát nem törlődik annak
korábbi tartalma. Adjuk ki
többször egymás után a
teszt: date >> idopont
parancsot. Szeretnék emlékeztetni
arra, hogy a felfelé mutató
nyíllal előhívhatjuk a korábbi
parancsokat, tehát nem kell ismét
begépelni azokat. Ezután a
cat paranccsal kiíratva a fájl
tartalmát, megtaláljuk abban a
parancs kiadási dátumokat.
A korábban bevitt parancsokat
nem csak az imént említett
nyíl billentyűkkel tudjuk előhívni,
hanem rendelkezésünkre
áll egy parancs is:
teszt: history
Ennek hatására megkapjuk a
korábban kiadott parancsok
sorszámozott listáját.
A HATÁR A CSILLAGOS ÉG
Van egy számológép, ami mindig
kéznél van a Terminal ablakban.
Vegyünk egy mély lélegzetet, írjuk
be a dc parancsot és küldjük
el, majd beírjuk az első számot,
elküldjük, jöhet a második
szám, ezt is elküldjük, majd beírva
egy műveleti jelet, elküldjük
és végül beírunk egy p betűt
(pops) és ezt is elküldjük és
máris láthatjuk az eredményt.
Szorozzuk meg 123-t 456-tal:
teszt: dc
123
456
*
p
56088
A dc programból a q betű
(quit) elküldésével léphetünk ki.
Kicsit szokatlan a használata!
Ez tény. De ha most beírunk
két 500 jegyű számot és összeszorozzuk
őket, akkor jön az
igazi meglepetés: a dc megcsinálja!
Tessék kipróbálni!
Zsebszámológépeink számolási
korlátait messze felülmúlja, jó
tudni, hogy van egy ilyen lehetőség
a tarsolyunkban.
Egy másik, kevéssé ismert
ügyes program a units. Ha például
km/h-t szeretnénk m/s-ra,
inchet méterre, köbmétert gallonra,
vagy centimétert feetre
(láb) váltani, csak gépeljük be
ezt a parancsot:
teszt: units
You have: 100 km/hour
You want: m/s
* 27.777778
/ 0.036
You have: 300 inch
You want: m
* 7.62
/ 0.1312336
You have: m^3
You want: gallons
* 264.17205
/ 0.0037854118
You have: 150 cm
You want: feet
* 4.9212598
/ 0.2032
Ötszáz különböző mértékegység
között válogathatunk!
Ebből a programból a CTRL + c billentyűk együttes lenyomásával
lehet kilépni. Érdemes
megjegyezni ezt a billentyű
kombinációt, általában is használhatjuk
parancsok futásának
megszakítására. Pl. az iménti
dc parancsból kiléphetünk ennek
segítségével is.
AKI KÍVÁNCSI ...
az jó ha ismeri a man ( class="unix">manual)
parancsot. Ennek segítségével
sok mindent megtudhatunk
a parancsokról, gyakran egyszerű
példákat is találunk használatukra.
Próbáljuk ki például:
teszt: man units
de érdemes az eddig megismert
parancsokról (például
"man dc", "man cal", vagy
"man man" :) és a későbbiekről
is további információkat
gyűjteni az operációs rendszerbe
beépített manuálok alapján.
Gyakran kiderül, hogy egy
egyszerűnek látszó parancs
rendkívül sokszínű tud lenni,
különböző opciók megadásával
kiválóan testre szabhatjuk.

A VILÁGJÁRÓ
Már láttuk, hogy a su parancs
segítségével egy terminál ablakon
belül egyszerűen átjelentkezhetünk
egy másik felhasználó
területére.
Lehetőség van azonban arra
is, hogy a hálózaton levő másik
számítógépre jelentkezzünk be
a terminál ablakon keresztül, és
ott szinte ugyanúgy dolgozzunk,
mintha közvetlenül a másik
gép előtt ülnénk. Amennyiben
ez a hálózat például az
Internet, akkor így akár a világ
másik felén levő számítógépet
is használhatjuk. Erre a telnet
parancs szolgált sokáig,
de ma már csak nagyon kevés
számítógépen engedélyezik a
használatát, mert ennek során
a megadott jelszó kódolatlanul
utazik a másik gépre, és menet
közben könnyen elkapható, mások
által is olvasható. A mai
biztonsági előírásoknak ez már
egyáltalán nem felel meg.
Helyette az ssh parancs
használata sokkal elterjedtebb,
ennek során a jelszó a bejelentkezéskor
titkosítva lesz elküldve
a távoli gépre. Alakja:
teszt: ssh -l felhasználó-név távoli-gépneve
A távoli gépen biztosítani és
engedélyezni kell az adott felhasználó
számára, hogy ezen a
módon be tudjon jelentkezni.
Ha a bejelentkezés sikeres volt,
ugyanazokat a parancsokat adhatjuk
ki, mintha egy terminál
ablakot nyitottunk volna az
előttünk levő gépen.
Az ftp egy másik gyakran
használt program, aminek a segítségével
távoli gépre bejelentkezünk
és onnan fájlokat letöltünk,
esetleg bizonyos fájlműveleteket
is végrehajtunk.
Régebben nagyon gyakori volt
az ftp parancssori használata,
ma már a grafikus programok
háttérbe szorítják, de jó
ha ismerjük a használatát, ami
nagyon egyszerű. Nézzük például,
hogyan tudunk bejelentkezni
az Apple ftp szerverére:
teszt: ftp ftp.apple.com
Ha a kapcsolat létrejött, akkor
a távoli gép kéri a bejelentkezési
nevünket. Ez vagy
ismert a számunkra, vagy ha
nem akkor meg lehet próbálni
anonymous-ként bejelentkezni.
Egyszerűen írjuk be az
anonymous szót és küldjük el.
Ha ez engedélyezve van a távoli
gépen (a nyilvános ftp
szerverek ilyenek), akkor általában
még megkérdezi az email
címünket. Illik megadni,
de ha nem tesszük, attól még
többnyire be fog engedni.
Több-kevesebb üdvözlő szöveg
után kapunk egy új promptot:
ftp>
ez jelöli, hogy a távoli ftp
szerver várja az utasításainkat.
A legfontosabbak a következők.
Az ls paranccsal kérhetünk
egy listát a távoli gépen levő
állományokról:
ftp> ls
drwxrwxrwx 3 ftpprod ftpprod 102 May 7 2003 Apple_Support_Area
drwxrwxr-x 11 ftpprod ftpprod 374 Mar 9 2004 filemaker
........
A d betűvel kezdődő sorok
könyvtárakat jelölnek a távoli
gépen, a könyvtár neve pedig
a sor végén látható. A könyvtárakba
a cd paranccsal lehet belépni.
Például lépjünk be és
nézzük meg mi van a filemaker
nevű könyvtárban:
ftp> cd filemaker
ftp> ls
drwxrwxr-x 7 ftpprod ftpprod 238 Nov 5 2002 Updaters
drwxrwxr-x 4 ftpprod ftpprod 136 Aug 19 2004 applications
-rwxrwxr-x 1 ftpprod ftpprod 44 Feb 21 2003 distribution.txt
....
Itt is vannak alkönyvtárak, de
találtunk egy szöveges fájlt is.
Töltsük le ezt a saját gépünkre,
erre a get parancs szolgál:
ftp> get distribution.txt
Az ftp programból az exit, a
close, a bye, vagy a quit
parancsokkal léphetünk ki. Ezután
például a már jól ismert
cat paranccsal megnézhetjük
a distribution.txt fájl tartalmát.

A get parancs hatásával ellenkező
irányú állománymozgást
érhetünk el a put parancs segítségével.
Ezzel tudunk fájlokat
feltölteni a távoli ftp szerverre,
ha ez ott engedélyezve van.
Az ftp program testvére az
sftp program, ami ssh alapon
működik, ezért ez egy secure ftp
program. Persze ennek nem
nyilvános szerverek esetében,
hanem akkor van értelme, ha
biztonságos adatcserét szeretnénk
végrehajtani távoli gépek
között. Ekkor a felhasználónév
és a hozzátartozó jelszó ismeretére
is szükség van. Mindkét ftp
program lehetőséget biztosít arra,
hogy bejelentkezés után parancsokat
adjunk ki a távoli gépen,
fájlokat töröljünk, könyvtárakat
hozzunk létre ...
Mutatok még egy érdekes lehetőséget:
teszt: curl -O http://www.almalap.hu/img/alma.gif
és máris leszedtük az Almalap
nyilvános szerveréről a kis
alma logót (feltéve, hogy nem
gépeltünk el semmit és a szerver
is elérhető :).
Aki
nem hiszi járjon utána,
például az "open ."
parancs segítségével
megnézheti, hogy a logó ott
van az aktuális könyvtárban.
Akit mélyebben érdekel a
fenti programok használata, érdemes
a man paranccsal tanulmányoznia
őket.

MI VAN A HÁTTÉRBEN?
Operációs rendszerünk jó pár
beépített programmal rendelkezik.
Amikor elindítunk egy
ilyen programot, azt úgy
mondjuk, hogy kiadunk egy
parancsot. Láttuk, hogy a parancs
kiadása vagy egyszerűen
a program nevének megadásával
történik, vagy különböző
opciókkal kiegészíthetjük és ezáltal
számunkra hasznosabb
feltételekkel is indíthatjuk.
Amikor egy parancs segítségével
elindítunk egy programot,
akkor elindul egy új processz.
A ps parancs (process
status) segítségével kilistázhatjuk
őket:
teszt: ps
Ennek hatására kapunk egy
listát a saját processzeinkről.
Ebben a listában két oszlopra
szeretném felhívni a figyelmet:
- az első oszlopban áll egy
szám (PID), ez a processz
egyedi azonosítója,
- az ötödik oszlopban áll a parancs
neve, amivel az adott
processz elindult.
Legalább egy processz mindig
fut, mert amikor elindítjuk a
terminált, akkor elindul egy
shell. Érdemes kipróbálni a következőt:
az egyik ablakban elindítjuk
a units parancsot,
majd egy másik ablakban a ps
parancsot.
Ugyanaz a program több példányban
is futhat. Nyissunk ki
több terminált és adjuk ki a dc
parancsot legalább két ablakban
és egy másikban a ps parancsot.
Látni fogjuk, hogy a
shell és az említett programok
is több példányban futnak,
mindegyik más és más PID
számmal rendelkezik.

Ha opcióval együtt indítjuk,
például:
teszt: ps -ax
akkor egy sokkal részletesebb
listát kapunk a gépen futó
összes processzről (amikor elindítjuk
a gépünket egy sor program
gondoskodik a háttérben,
hogy kiszolgálja kívánságainkat
és más felhasználók is indíthatnak
processzeket). Alapesetben
a ps parancs növekvő
PID szerint írja ki a listát, de
ezt lehet befolyásolni. A "ps
-axm" parancs a memória
használat, a "ps -axr" pedig
az aktuális processzor használat
alapján rendezi a listát.
Érdemes megfigyelni, hogy
az a, x m, r és még további
opciókat is tetszés szerint variálhatjuk,
és ennek függvényében
más és más típusú listát
kapunk. A PID használatára
még hamarosan visszatérünk!
Van még egy érdekes parancs
a processzek listázására, ez dinamikusan,
periodikusan frissülve
szolgáltat információkat:
PID, CPU használat, memória
használat ..., illetve többek között
az összes futó processz
számáról, állapotáról, a memória,
a CPU kihasználtságáról is
tájékoztat. Ez az Activity
Monitor nevű grafikus program
(Applications/Utilities
mappában található) terminálbeli
megfelelője, a neve
top:
teszt: top
A parancsból a q billentyű
megnyomásával, vagy a CTRL + c billentyűkombinációval tudunk
kilépni.
Érdemes kipróbálni mondjuk
a "top -u" változatot, a
processzeket így a pillanatnyi
memóriahasználatuk sorrendjében
láthatjuk.
A GYILKOS
Hogy maradjon egy kis izgalom
is a mai nap végére, megismerkedünk
egy profi gyilkossal!
A parancs neve stílszerűen:
kill. Annak ellenére,
hogy nem gyilkolásra lett kitalálva,
hanem arra, hogy különböző
szignálokat küldjön a futó
processzeknek, mégis leggyakrabban
arra használják, hogy beragadt
processzeket kilőjenek
vele. A parancs alap formája:
teszt: kill PID
ahol a PID a processz sorszáma,
amit például a ps parancs
első oszlopában találunk meg.

Figyelem! Ha elnézzük a sorszámot,
tehát rosszul írjuk be a
PID számot, akkor két eset lehetséges,
vagy nincs az adott
sorszámmal rendelkező processz,
vagy van. Az első esetben
csak egy hibajelzést kapunk
arról, hogy ilyen sorszámmal
nem létezik processz, a második
esetben viszont kellemetlen
meglepetés is érhet. Példaképpen
megemlítem, hogy saját
magunk alatt is vághatjuk a
fát, kilőhetjük a terminálban
futó saját shell processzünket.
Tessék kipróbálni!
Vannak azonban olyan
processzek amelyek nem reagálnak
a sima kill parancsra,
vagy éppen annyira beragadtak,
hogy azért nem veszik az
adást. Ilyenkor lehet fokozni az
élvezetet:
teszt: kill -9 PID
A -9 opciónak már nem tud
ellenállni egyetlen processz sem.
Vannak olyan parancsok,
amik rögtön végrehajtódnak,
elvégzik a dolgukat és maguktól
leállnak, visszakapjuk a
promptot és újabb parancs
beírására vár a shell. Ilyen
például a say, a cal, a
date vagy a kill parancs.
De több olyan paranccsal is
találkoztunk, amelyek indítás
után folyamatosan futnak, és
a saját parancsaikra várnak,
Ilyen például a dc, a units, a
top. Azt is láttuk, hogy az
utóbbiakból általában a CTRL + c billentyűkombinációval lehet
kilépni, azaz megszakítani a futásukat,
de többnyire vannak
saját beépített megszakító parancsaik is (q, quit, exit,
...). Azonban már velem is előfordult
többször is, hogy nem
sikerült így kilőni egy processzt.
Vagy lefagyott és nem
reagált, vagy eleve úgy lett
megírva a program, hogy ne lehessen
szabványosan kilépni
belőle. Ilyenkor meg lehet próbálni
a CTRL + z billentyűkombinációt,
ami felfüggeszti a
processzek futását. Ezután a ps
paranccsal megkeressük a felfüggesztett
(vagy beragadt)
processz PID értékét és először
a kill parancs első változatával
megpróbáljuk kilőni. A második
változatot (-9) csak akkor
használjuk, ha az első csütörtököt
mondott.
Előfordulhat olyan eset is,
hogy a grafikus Force Quit Applications
sem tud segíteni, de a
terminál kill parancsával akkor
is érdemes próbálkozni!
Major Zoltán zoli(kukac)mac.com
|
|
 |
Alkalmazás cikkeink 2006-ban |
|