Zamýšľali ste sa niekedy nad tým, prečo sú Macy tak stabilné? Nie je to tým, že je o ne lepšie postarané? Ale áno, je, a to bez ohľadu na užívateľa. Počas noci sa spúšťajú opravné skripty, ktoré sa snažia napraviť všetko, čo by mohlo spôsobiť problémy. Možno by vás mohlo zaujímať, ako pracujú, kedy pracujú a ako im pomôcť udržať vášho Maca fit.V Mac OS X sa nachádzajú tri druhy týchto skriptov, ktoré zabezpečujú základnú údržbu systému. Tieto skripty však nedajú najavo že bežia a preto si ich asi nikdy nevšimnete (občas počuť prácu hlavičiek diskov, aj keď sa zdanlivo nič nedeje). Dôvod, prečo sa spúšťajú práve v noci, je jednoduchý a treba za ním hľadať pôvodný účel Unixu. Ten bol vytvorený tak, aby na počítač mohli cez terminál pristupovať viacerí užívatelia nezávisle na sebe a preto musel bežať 24 hodín denne, 7 dní v týždni. Jasný predpoklad bol, že v noci bude vyťaženie najnižšie a teda nikomu nebude prekážať, ak sa CPU bude venovať voľnočasovým aktivitám. Napriek tomu bolo nutné narábať s výkonom opatrne a preto sa skripty spúšťajú s rôznou periodicitou.
- Denný skript: Spúšťa sa o 3:15 lokálneho času. Má na starosti vymazanie dočasných a nepotrebných súborov, prekladá .log súbory (nezmaže ich), ukladá internetové štatistiky a zálohuje NetInfo databázu. Ak si chcete podrobne pozrieť, čo všetko sa deje, spustite si aplikáciu Console (Applications/Utilities). Potom z horného menu vyberte File/Open Quickly/„/var/log/“/daily.out. Vypíše sa kompletný log celého procesu, pokiaľ už na vašom Macu prebehol aspoň raz. Takže v prípade, že ste počítač práve nevybrali zo škatule, niečo tam isto nájdete.
- Týždenný skript: Spúšťa sa o 3:15 (Tiger) alebo o 4:30 (staršie verzie) vždy v sobotu. Nanovo vybuduje databázu locate a whatis, ďalej sa postará o veľké množstvo logov, rovnako ako denný skript. Presné záznamy si môžete pozrieť v Console, tentokrát však v súbore weekly.out.
- Mesačný skript: Spúšťa sa vždy v prvý deň mesiaca o 5:30. Podá správy o mesačnom používaní jednotlivými užívateľmi a opäť sa stará o logy. Výpis sa nachádza v súbore monthly.out.
Môže sa však stať, že sa tieto skripty nespustia alebo sa budú spúšťať len príležitostne. Treba za tým hľadať spôsob, akým sa meria čas do vykonania. Ak totiž Maca uspíte alebo vypnete 3 hodiny pred spustením (napríklad) denného skriptu a opäť ho zapnete minútu po termíne, po naštartovaní sa skript spustí až po 3 hodinách a jednej minúte behu. Čas, ktorý Mac strávil v spánku alebo ktorý bol vypnutý sa nepočíta. To by až taký problém nebol, ale ak ho nenecháte bežať tieto 3 hodiny a reštartujete ho, údaje o tom, že skript nebol vykonaný sa zmažú a ďalšia šanca príde až v nasledujúci nastavený čas. Preto ak máte v noci pravidelne Maca vypnutého/uspaného a cez deň častejšie reštartujete, môže sa stať, že aj po roku používania sa mesačný skript vykoná len pár krát, týždenný možno raz za mesiac a denný len raz za (napríklad) päť dní. Ak chcete vedieť, kedy skripty naposledy prebehli, môžte si spustiť Terminál (Applications/Utilities) a napísať:
ls -al /var/log/*.out
Účinný spôsob, ako zabrániť potencionálnym problémom, je v takýchto prípadoch ručné spúšťanie. Buď použijete ľubovoľnú opravnú utilitu (Onyx, MainMenu, Tiger Cache Cleaner) alebo to urobíte cez Terminál. Vtedy stačí napísať do okna:
sudo periodic daily weekly monthly
stlačiť enter, zadať heslo administrátorského účtu a ešte raz potvrdiť enterom. Ak chcete spustiť len jeden zo skriptov, napíšte napríklad:
sudo periodic monthly
Vyvarujte sa však zbytočne častému spúšťaniu, nemá to žiadny efekt a iba zabíjate svoj čas. Ak sa vám nechce spúšťať ich manuálne a ani nechcete mať spustený počítač počas noci, existuje možnosť nastaviť si vlastnú dobu spúšťania. Budete k tomu potrebovať aplikáciu Onyx. Po jej nainštalovaní a spustení si zvoľte Maintenance/Scripts/Schedule a v otvorenom okne nastvte preferovanú dobu, napíklad čas obeda alebo čas, kedy zvyknete vybavovať poštu a nepotrebujete plný výkon.
Ak to necháte plávať a budete sa vystavovať riziku nespustenia skriptov, môže to vyústiť k menším nepríjemnostiam. Veľkú časť miesta na disku pohltia nekonečne dlhé logy a Mac sa môže trochu spomaliť. Rovnako je však možné, že nikdy nič nezbadáte. Je to na vás. Odporúčam vám príliš sa tým netrápiť, zvlášť ak ste čerstvý switcher, a raz za dva až tri mesiace spustiť jednu z hore menovaných utilít na údržbu systému, ako prevenciu.
komentárov
vdaka za zaujimavy clanok. podla vsetkeho mi scripty funguju.
ina otazka: v okne console.log mi priemerne kazdych sest sekund vyskoci novy zaznam
May 18 10:19:05 MacMiro-G5 mdimportserver[14536]: sniffer can’t check in… 1102
Vobec tomu nerozumiem a neviem ci je to v poriadku alebo nejaky problem. vdaka za radu uz dopredu.
Ja mam regenrovanie locate nastavene na kazdu hodinu, vyrazne to pomaha k lepsim (a najma rychlejsim) vysledkom vyhladavania na disku.
neviem, z coho napr. software apple generuje vyhladavanie, ale predpokladam, ze aj z databazy locate/slocate. preto je podla mna dolezite mat ju udrziavanu, hlavne ked sa subory na disku menia niekolko Xkrat za den
Supr článek. Takže Onyx a další zbytečnosti nejsou třeba, OSX se udržuje sám :)
diky za velice zajimavy a uzitecny clanek!
miro novak: mas nejake subory v /Library/StartupItems/ ?
popripade, nic si nerobil s netinfo managerom?
dusoft: update locate db kazdu hodinu povazujem za prehnane. raz za den to musi stacit. neviem co robis s tvojim macom, ale podla mna v 99% pripadoch ti ten update neprida ziadny hodnotny subor do databazy.
mimochodom odporucil by som ti vyskusat program Quicksilver – je to nieco ako locate, ale nie pre terminal, ale seriozna GUI aplikacia. Jeho vyhodou v porovnani s “locate” je ze tam mozes nastavit ktore adresare sa maju indexovat, a ako casto sa maju kontrolovat, takze ked Quicksilver robi update tak to trva len nepatrny cas … locate/db update da diskom dost zabrat :-)
mimochodom spotlight spolupracuje s jadrom os x ktory ho informuje pri kazdom (uplne kazdom) ulozeni alebo zmene suboru na disku. preto ma spotlight vzdy aktualne informacie, bez agresivneho prehladavania diskov.
toxygen: /Library/StartupItems/
na startovacom disku: nemam nic
v zlozke system: 17 zloziek
v userovi: nemam taku zlozku vytvorenu.
(Je normalne, ze mam library na troch miestach? Ako vysledok postupneho upgrade?)
s net info managerom som nic nerobil (do takych veci nesaham)
dik za pomoc
Miro Novak:
Sniffer slúži na skenovanie siete a loging trafficu, takže ak sa niekto hrabe vo vašej sieti a skenuje každý packet (čo je úlohou tohto softu), Mac ho nepustí ďalej a zapíše to do logu. Prehoďte pár slov s adminom, providerom, alebo inou háveďou čo sa stará o vašu sieť či internet, ale nemalo by to spôsobiť žiadny problém. Každopádne, ten čo to používa vie absolútne všetko o tom, čo ide z vašej sieťovky.
Naozaj dobry clanok!
Skusil som v konzole zistit kedy sa mi tie skripty spustili, a vysledok bol dost sokujuci:
Denny skript sa spustil naposledy 22.Marca, tyzdenny sa nespustil zatial nikdy (!) a to ho mam od septembra. Myslim, ze mam dovod ako presvedcit mamu, ze pocitac je zbytocne vypinat :D No a ten mesacny sa spustil prveho februara.
Tak som ich spustil rucne, a pobavilo ma to co mi vyhodilo pred zadanim root passwordu:
We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:
#1) Respect the privacy of others.
#2) Think before you type.
#3) With great power comes great responsibility.
Najma ta posledna hlaska je dost husta.
ja maca nemam, mam linuxovy stroj. ak pozadujem dokonale vyhladavanie – t.j. zadam nazov a za sekundu mam vysledky, nic ine ako pouzivanie locate/slocate nie je mozne.
indexacia sa musi robit co najcastejsie – predstav si, ze stahujes kopu suborov, ktore su na disku a nasledne niektore mazes, niektore nechavas. ak by som to mal iba raz za den, napr. opol noci, tak nebudem poobede vediet najst to, co som stiahol rano (extremny pripad, lebo vacsinou sa to da utriedit – ale plati to aj o prilohach mailov atd).
To co pise Maros o snifferoch je sice pravda, ale nema s hlaskami na Mirovom macu nic spolocne. Tie totiz produkuje program mdimportserver, ktory sa stara o rozhodovanie ktore subory budu indexovane spotlightom.
Co znamena konkretna hlaska “sniffer can’t check in … 1102” neviem, ale mozem ti poradit aby si si skontroloval ci nejaky program co mas nenainstaloval Spotlight-importer, a ci ten nerobi problemy.
Zoznam nainstalovanych Spotlight importerov dostanes prikazom: mdimport -L
Ak nic podozrive nenajdes, tak mozes dat vygenerovat Spotlight index odznova
aha, pises, ze spotlight nejako bezi de facto rezidentne, cize tam potom locate nehra rolu, ked si kontroluje spotlight kazdy pristup na disk.
samokolesar: ta hlaska je standard unixu a objaavuje sa pri su/sudo.
dusoft: typicka odpoved linuxaka ;-) poznam to, tiez som fical skoro 10 rokov na linuxe
nechce sa mi verit ze pouzivas locate na pristup k suborom co si stiahol v ten isty den. ak ano, tak musis mat poriadny bordel na kompe :-)
pre linux existuje tiez nieco ako Quicksilver, tusim sa to vola launch box, a je to pre gnome … ale nikdy som to nevidel, a mam pochybnosti ci to siaha Quicksilveru aspon po kolena :-)
Odjakživa ma fascinovalo to, ako sa Mac o seba stará sám.
Pekný článok, pochopiteľný a zároveň obsažný.
Vďaka !
Chcel som napisat o “nezmyselnych autorovych dedukciach” v clanku. Mal som to pekne napisane, ale tento clanok ma zabil. Prosim Vas, ked nieco pisete vazne, tak si aspon prestudujte WIKI alebo nejaku knihu o OS X. Alebo sa nabuduce docitame, ze OS X 10.4 pouziva RC scripty a preto je stabilny /obe veci su nezmysel, samozrejme, to pre tych, kt. veria vsetkemu, co sa tu pise/?
Milý Systemak,
pokiaľ viem, nikde som nenapísal, že OS X je stabilný LEN preto, že používa CRON skripty, to že ste to tak pochopili je mi ľúto. Čo sa týka Sniffera, tak sa ospravedlňujem, že som sa práve netrafil, chcel som pomôcť tak som hodil svoj tip. Nikto ma za to neplatí, aby som 8 hodín googlil, akému problému Miro čelí.
Ale mimoriadne by ma zaujímalo, čo myslíte pod “nezmyselnými dedukciami”, pretože v článku sú len tvrdé fakty, žiadne dedukcie a domyslené polopravdy. Ak sa vám môj štýl písania nepáči, napíšte do redakcie, že chcete prispievať a prejavte sa. Nabudúce prosím nepíšte nekonkrétnu kritiku, len sa ňou začínajú flamy, chcem počuť názor, ale podložený faktami.
Mily Maros,
je uz skoro rano a na blbosti uz nemam energiu. Nemam zaujem rozputavat flejmy, tak nechajme hovorit fakty, teda terminal, wiki a Apple :).
1. Kde vidis v OS X /10.4.x/ cron joby ?
[user@PB:~]$ cat /etc/crontab
# The periodic and atrun jobs have moved to launchd jobs
# See /System/Library/LaunchDaemons
#
# minute hour mday month wday who command
[user@PB:~]$ sudo crontab -l -u root
Password:
[user@PB:~]$
[user@PB:~]$ sudo crontab -l -u user
[user@PB:~]$
2. Aha v OS X /10.4.x/, existuje nieco ako launchd, ze?
http://developer.apple.com/macosx/launchd.html
Vycuc: “Migrating from cron
cron jobs are generally best handled with the StartInterval or StartCalendarInterval keys. StartInterval is used for fixed time intervals; for instance, a job running every five minutes. The StartCalendarInterval key can be used to specify regularly occurring times on a weekly or monthly basis, or that run at specific hours every day.”
http://en.wikipedia.org/wiki/Launchd
3. Ejha, v Tigrovi sa cron nepouziva, pruser. No nic, idem spat :).
4. PS: Nehovorim, ze cron nejde v Tigrovi pouzit, ale Apple ho poslal k vode.
nie som ziadny linuxak. pozadujem produktivny OS. bordel na disku je zbytocne riesit, locate ma zmysel pustat kazdu hodinu, zbehne to za minutu, aky problem.
v kde mam locate napojeny na konqueror, cize nieco ako spotlight. ine indexacie neriesim, naco aj.
Systemak,
možno budeš sklamaný, ale z tvojho príspevku som sa nič nového nedozvedel. To že skripty sa presunuli viem, ale rozdiel medzi pravoverným pôvodným cron-om a skriptom spúšťaného cez Launchd je len ten, že ak ich chceš prečasovať, musíš na to ísť cez com.apple.periodic-daily/weekly/monthly.plist v System/Library/LaunchDaemons. Všetko ostatné ostalo po starom, aj Apple ich stále volá “cron scripts”. Čo sa týka udalostí keď sa skripty nespúšťajú, tak tie som napísal práve pre Launchd, i keď to tak fungovalo aj za Panthera, mám ho, tak mi nehovor že nie :-)
Maros myslim, ze „Systemak“ to napisal dost jasne. Apple uz ZIADNY cron a ANI cron skripty NEPOUZIVA.
Launchd != cron !!!
Over si to prosim. Launchd je novy deamon v Mac OS X, ktory obstarava daleko viac veci a predovsetkym, zdruzuje povodne veci z BSD pod jednu strechu avsak uplne inym sposobom. Namiesto spustania roznych procesov cez rozne nastroje ide vsetko cez launchd. Ale nie tak, ze ten aktivuje napr. cron alebo RC skripty!!!
Precitaj si o tom viac. Apple nove konfiguraky (inak teraz pisane v XML) nazyva ako pises LaunchDaemons. CRON skripty boli, su aj budu nieco uplne, ale uplne ine.
Vazne nema zmysel sa hadat, az sa budes chciet hrat do buducna na drsneho odbornika na Mac OS X doporucujem zacat usilovnym studiom Developer dokumentacie a hodi sa aj kniha Mac OS X Internals od Amita Singha.
Pravdu ma (bohuzial pre Teba) Systemak.
este k tomu „precasovaniu“. Dobre si pozri tie XML subory, je tam presne napisane co, kedy a odkial sa ma spustat v dany cas ktory sleduje launchd. Porovnaj to s cron jobmi v 10.3, nejakom distre Linuxu a v BSD. Je to nieco uplne ine.
LaunchDaemon com.apple.periodic-daily.plist:
Label
com.apple.periodic-daily
ProgramArguments
/usr/sbin/periodic
daily
LowPriorityIO
Nice
1
StartCalendarInterval
Hour
3
Minute
15
Teraz vypis z periodic-daily pre cron z /etc/:
#!/bin/sh –
#
# @(#)daily 8.2 (Berkeley) 1/25/94
#
PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin
host=`hostname -s`
bak=/var/backups
echo “”
echo “Removing scratch and junk files:”
if [ -d /var/rwho ] ; then
cd /var/rwho && {
find . ! -name . -mtime +7 -exec rm -f — {} \; ; }
fi
# Clean up junk files.
#find / \( ! -fstype local -o -fstype rdonly \) -a -prune -o \
# \( -name ‘[#,]*’ -o -name ‘.#*’ -o -name a.out -o -name ‘*.core’ \
# -o -name ‘*.CKP’ -o -name ‘.emacs_[0-9]*’ \) \
# -a -atime +3 -exec rm -f — {} \;
Aktivacia prebieha cez subor /etc/crontab ale ejhla, ten akosi v OS X 10.4 nemame (ako poznamenava Systemak).
Zasadny (velmi zasadny) rozdiel je v tom, ze Launchd si nacita obsah zloziek LaunchDaemons a LaunchAgents (klasicky v OS X z roznych Library foldrov) a nasledne aktivuje aplikacie alebo priamo shell skripty. Cron proces nacita subor /etc/crontab v ktorom su zadane priame cesty k udrzbovym skriptom alebo k spustenym aplikaciam.
tu je ciastocny popis funkcii Launchd (cast 4 odspodu je ta nasa). Ako vidiet, spustanie procesov v case je len jedna z uloh launchd, kdezto pri CRON je to jeho JEDINA uloha:
launchd is the master bootstrap daemon beginning with Mac OS X 10.4. It subsumes the functionality of the traditional init program and the erstwhile Mac OS X mach_init program. The following are notable features of launchd.
It manages both system-wide daemons and per-user agents. An agent is a type of daemon that runs while a user is logged in. Unless the distinction is necessary, we will use the term daemons in this discussion to refer to both daemons and agents.
As the first user process, it performs user-level system bootstrap.
It handles both single-user and multiuser booting modes. In a multiuser boot, it runs the traditional BSD-style command script (/etc/rc) and sets up daemons whose configuration files are located in designated directories such as /System/Library/LaunchDaemons/, /Library/LaunchDaemons/, /System/Library/LaunchAgents/, /Library/LaunchAgents/, and ~/Library/LaunchAgents/.
It supports daemons that are designed to run under the inetd superserver on Unix systems.
It can run jobs periodically. A launchd job is an abstraction that consists of a runnable entity (a program) along with the entity’s configuration.
It allows several aspects of a daemon to be configured through a property list file, rather than the daemon having to programmatically configure itself.
It can start daemons on demand, based on a variety of conditions.
launchd simplifies the configuration, management, and, in many cases, even creation of daemons.
Dobre, asi by som mal prejsť na Tigra a spoznať to kúzlo bližšie. Ale aj Tiger dáva pri ls -al /var/log/*.out solídny výstup a v pravidelných intervaloch sa na ňom niečo deje. Ak niečo nahradilo moje milované cron skripty a ja si idem radšej pozrieť, že čo. Potom článok opravím, ďakujem za to, že ste ma vyviedli z omylu a ospravedlňujem sa čitateľom, ktorých som do toho istého omylu uviedol. Našťastie pre staré verzie Mac OS X informácie v článku platia.
Ano, pre stare verzie to plati. Treba preto uviest vzdy pre aky system a spomenut to v clanku. Inak tam chyba dolezita informacia pre beznych pouzivatelov. A to, ze cas spustania udrzby sa da nastavit napr. cez Onyx a netreba teda nechavat pocitac zapnuty v noci (alebo zakazdym rucne udrzbu robit cez Onyx)
Maros, vela veci sa v 10.4 zmenilo a 10.5 bude zase posun niekde uplne inde. Napr. bude implementovany princip sandboxov z TrustedBSD, ktory bude moct pouzivat kazda aplikacia (aj Safari – teda vsetko bude bezat vo vlastnom chranenom priestore ak uzivatel/programator tak urci).
Okrem toho bude uplne vypustene NetInfo na spravu uctov a namiesto toho vsetko pobezi v OpenDirectory databaze na localhoste.
Tiez bude konecne implementovana funkcia dynamickych adresnych priestorov ako vo Vista.
Mac OS X je proste ina bestia ako klasicke *nixove systemy (aj ked kazdy ma svoje specifika) a tak treba koncipovat aj clanky. No schvalne skuste si ucinnost konfigurakov v /etc, kolko z nich bude fungovat :)
Jozo Remen len taka poznamocka, jediny kto sa (vsade kde sa Apple objavi) hra na drsneho odbornika na Mac OS X si bohuzial ty.
Maros, ja si tiez myslim, ze som to napisal dost jasne. Mne bolo hned uplne jasne, ze ty si to pisal na OS 10.3.x :) a o launchd si si poriadnejsie precital /dufam/ az ked som do toho tu rypol. Ale to ta neospravedlnuje. na druhej strane je potesitelne, ze mas snahu clanok opravit.
Rovnako ma tesi ze to Jozo uz nevydrzal a podporil pravdu. Lebo by ste sa tu boli schopni so mnou handrkovat ako male deti :).
Yo a LAciko, Jozo sa v OS X vyzna lepsie ako tunaka vsetci dobromady /no flame pls/. Teda okrem mna :).
LAciko: ano, neraz som sa zmylil vo svojich tvrdeniach. Chybu som si vsak vzdy priznal. Spravil to aj Maros co sa mi paci :)
LAciko ja vazne neviem, preco sa na Slovensku povazuje znalost niecoho (a predvedenie tych znalosti) za nieco nemoralne az doslova urazlive. Takze ak nieco viem tak mam cusat a radsej sa tvarit ako sprosty? Alebo idealne nevediet o nicom nic aby clovek lepsie zapadol?
To bohuzial u nas plati vsade. Nechapem, preco clovek, ktory nieco ovlada je u nas povazovany za oportunistu, vsevedka, mamrdka v brejlich apod. Vela veci neviem a nikdy vediet nebudem a vazim si kazdeho. Nikdy som sa netvaril ako vsevedko, proste sa venujem Macom dlho tak je prirodzene, ze nieco o tom viem. Niekto je ekonom, niekto lekar, niekto je skvely murar alebo elektrikar. Vyviest niekoho z omylu ukazanim, ze to viem lepsie snad nie je nic hriesne. Alebo je snad lepsie ostat vo vlastnom omyle a povazovat to za jedinu pravdu? To sa potom posuvame na uroven volicov sucasnej garnitury.
Podla mna ide o nepodstatny problem, clanok je inak fajn a velmi by ma potesilo keby ludia co nieco ovladaju napisali nabuduce aspon tak putavy clanok ako Maros.
Odbornici – pomozte nam amaterom !!!!!!
P.S. pre zaciatocnikov a launchd vs cron:
http://www.macdevcenter.com/pub/a/mac/2005/11/15/terminal5.html
Remen:
Vsetko fajn mas pravdu ako vzdy, ale tu poslednu vetu ” To sa potom posuvame na uroven volicov sucasnej garnitury.” si si mohol odpustit. Volby u nas su tajne a tak nieco take tvrdit je neuveritelne nepodlozene.
Velice dobrý článek, nikdy jsem netušil že se tohle děje.
MiS: keby som mal pravdu vzdy tak som prave sucasnym premierom, ten si to mysli. Alebo minimalne prachac, zatial vsak beham s holou ritou :D
Sorry nemohol som odolat ;)
Link si hodil dobry. Mozno by nebolo odveci do clanku pridat nejake GUI utility sluziace prave na nastavenie spominaneho chovania. Onyx je vseobecne znamy, su vsak aj ine
Mimochodem jsem si nastavoval zalohovaci scripty v 10.4. pres launchd, kdyz uz je cron applem zapomenuty. K memu prekvapeni jsem zjistil, ze se script spusti jenom jednou po nacteni launchd.plistu a nikoli periodicky.
Overoval jsem to i na 10.4.9. ale podle googlu se jedna o bug ohlaseny na apple jiz dost dlouho. Prakticky to znamena ze launchd je jako nahrada cronu diky tomuto bugu nepouzitelny a take to, ze vsechny “periodic” scripty v tigeru nefunguji (napr. se nespusti pokud neresstartujete predtim pocitac).
Dakujem za pekny a poucny clanok, ja som cerstvy switcher a kedze som na Win platformach bol v podobnom duchu dost zaangazovany (udrzba sys) tak som tomuto velmi rad, a ak by bolo mozne VIAC takychto clankov venujucim sa systemovym zalezitostiam, udrzbe, manazovaniu systemu etc.
Dikes ;)