(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 < anyazoletterEz 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 -esegí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ÁLJONSzó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 < valamitEz 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 * * * * botchkez 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/basqRemélem nem adok senkinek se gonosz ötleteket (bár ez egy eléggé fiktív fileocska)...
___ Blue Wave/QWK v2.12
Vissza Előre