T. I. N. T. F. M.

(This IsN't The F*cking Manual)

UNIX
a la Hamster

A rendszeridő urai

Kicsit megint ideültem a gép elé, hátha eszembejut valami, amit megoszthatok másokkal... Végülis kis kikapcsolódásként pár olyan dolog, ami beugrik. (például én a vízbe, de ez nem ide tartozik;-) Sokszor eszünkbe juthat, hogy valamit akkor akarunk futtatni, amikor senki nincs a környéken, pláne nem mi. Például szerelmeslevelet akarunk küldeni valakinek... izé, például azt akarjuk, hogy adott időben induljon el egy program, ami a gépen benn levő usereket kirúgja. Ennek nagyszerű eszköze lehet az at utasítás. Ez úgy működik, hogy beírjuk a kívánt időt az at után, majd amikor a sor ugrik, de nem kapunk shell promptot, akkor beírjuk, hogy mit is csináljon a gép akkor. Pl.:

at 23:00 (itt meg kell mondani azt az ENTER/RETURN feliratú gombot, majd (<-ezt oda ne írd, mert dühös leszek:-)) 
mail root < anyazoletter
Ez itt kéremszépen elküldi levélként a rootnak az 'anyazoletter' című fájlt 23:00-kor... illetve amikor a rendszeróra alapján a Unikz azt nem hiszi, hogy annyi az idő. Ha beírtuk, hogy véleményünk szerint mit kellene az adott időpontban csinálnia, CTRL+D-vel befejezhetjük a 'betáplálást'. Ezután a rendszer tudomásul veszi a teendőket, legfeljebb nem hajtja végre... Amennyiben valami hiba vagy output adódik, az sem vész el, hanem megkapjuk mailben. Az at nagyszerű dolog, de nem valami kifinomult módszer ismétlődő teendők végrehajtására, van kényelmesebb, névszerint a crontab.
crontab -e
segítségével kapunk egy szerkesztőt (az EDITOR környezeti változónak megfelelőt, defaultból rendszerint a vi-t), amivel egy táblázatot (igazából egy fájlt) szerkeszthetünk. Az ide beírni ajánlott dolgok valahogy így alakulnak:
PERC    ÓRA    NAP    HÓNAP    HÉTMELYIKNAPJA    MITCSINÁLJON
Szóvaltehátígybiza:
23 * * May * rm *.*
Ez a példa május minden napjának minden órájának 23. percében letörli a (feltehetőleg) home könyvtárunkban található fileokat. Arra ez alapján remélhetőleg rá lehet jönni, hogy a '*' azt jelenti, hogy annak az adatnak az állapota nem számít, az bármi lehet (wildcard v. joker). De meg lehet azt is oldani, hogy egy adattípusnak (jajj) több értékét is értelmezze, pl.:
*/5 * 30 Aug * mail valaki < valamit
Ez a fentebbi példa augusztus 30-án minden órában öt percenként elküldi levélben a "valamit" file-t. Végül is bármilyen shell parancsot végrehajthat a crontab:
0,10,20,30,40,50 * * * * botchk
ez minden tizedik percben elindítja a botchk nevű fájlt vagy parancsot (ami ezesetben egy shellscript, nehogy valaki azt higyje, hogy az is egy standard UNIX-parancs). A stderr és a stdout természetesen ugyanúgy alakul, mint az at-nál, megkapjuk borítékolva... (azért ezzel vigyázzunk, ha valami ötpercenként sok outputot ad, az kellemetlen lehet: ha mondjuk elmegyünk egy hónapra, úgy érünk vissza, hogy a levelesládánkat telenyomta a crontab!) Ha valamiért nincs szükségünk a crontabra, akkor a crontab -d (helyenként crontab -r) törli az összes beállítást, a crontab -l pedig kiiratja (nahogy ezt most miért ilyen sorrendben írtam le...). Én speciel jobban szeretem file-ban megszerkeszteni a dolgot, aztán crontab file_neve_amiben_a_beallitasok_vannak kiadásával tudatni azt a rendszerrel. Még valami: takarékoskodjunk a túl sok crontabbal, mert zavaró, és esetleg akadályozó lehet, illetve a rendszergazdák se fognak őszintén szeretni, ha percenként molyolunk valamit. Lehetőleg ne is közvetlenül parancsot indíttassunk a cron-nal, hanem egy végrehajtható scriptet, ami leellenőrzi, hogy van-e értelme annak, hogy valami történjen. Például az én irc-botomat nem úgy állítottam be, hogy minden öt percben újraindítsa, hanem csak akkor, ha erre szükség van, jelesül, ha véletlenül (prghiba, reboot, stb) kifagyott, leállt volna.

Na tényleg rámfér a kikapcsolódás, inkább ideidézek egy kellemes password-file-t, hogy többnek tűnjön ez a mai lecke...:)))

root:DsE234VjXZvrCf.:0:0:Varga Hamster:/root:/bin/bash 
bin:*:1:1:bin:/bin: 
daemon:*:2:2:daemon:/sbin: 
adm:*:3:4:adm:/var/adm: 
lp:*:4:7:lp:/var/spool/lpd: 
sync:*:5:0:sync:/sbin:/bin/sync 
shutdown:*:6:0:shutdown:/sbin:/sbin/shutdown 
halt:*:7:0:halt:/sbin:/sbin/halt 
mail:*:8:12:mail:/var/spool/mail: 
news:*:9:13:news:/usr/lib/news: 
uucp:*:10:14:uucp:/var/spool/uucppublic: 
games:*:12:100:games:/usr/games: 
man:*:13:15:man:/usr/man: 
nobody:*:65535:100:nobody:/dev/null: 
ftp:*:404:1::/home/ftp:/bin/bash 
hamster:e945fimuYsas:222:100:Akos Varga,,,1735541:/home/hamster:/bin/bash 
las:.6itxM3HUYyhUN2:333:100:Attila Lorincz:/home/las:/bin/bash 
mano:WLRku*&DSVVo6:444:100:Manocska:/home/mano:/bin/bash 
antforce:1S^hgZO8Y3B7xY:555:100:Ferenc Printz:/home/antforce:/bin/bash 
grin:6hJIKUhgjY&2:666:100:DeVil:/home/grin:/bin/zsh 
basq:798UJH987h6F:777:100:Kovacs Bazsi:/home/basq:/bin/basq
Remélem nem adok senkinek se gonosz ötleteket (bár ez egy eléggé fiktív fileocska)...
Na ciao, legközelebb talán már értelem is lesz az egészben...

___ Blue Wave/QWK v2.12
Vissza Előre