Azt sem szeretnénk, hogy az asztalon figyeljen egy volume icon, tehát azt elrejtjük. Firefox és Safari is kell, íme a script:
file: Scripts/firefox-cache-ramdisk.sh
#!/bin/bash ScriptUser=majki VolumeName=FFCache # if script is running as root, switch to user if [ "$(/usr/bin/whoami)" == "root" ]; then echo "We are running as root, switching to user $ScriptUser" /usr/bin/su - $ScriptUser -c "$0 $1" exit 0 fi if [ "$1" == "start" ]; then cd ~/Library/Caches/Firefox/ if test -d Profiles_; then echo "Unclean shutdown detected, fixing..." /bin/rm Profiles /bin/mv Profiles_ Profiles fi # ^- szerkesztve SizeInMB=512 NumSectors=$((2*1024*SizeInMB)) DeviceName=`/usr/bin/hdid -nomount ram://$NumSectors` echo $DeviceName /usr/sbin/diskutil eraseVolume HFS+ $VolumeName $DeviceName # hiding volume /Developer/Tools/SetFile -a V /Volumes/$VolumeName /usr/bin/killall Finder /bin/mv Profiles Profiles_ && /bin/ln -s /Volumes/$VolumeName ./Profiles && /opt/local/bin/gcp -a Profiles_/* Profiles # Creating safari stuffs /bin/mkdir -p /Volumes/$VolumeName/Safari/com.apple.Safari /bin/mkdir -p /Volumes/$VolumeName/Safari/Metadata/Safari elif [ "$1" == "stop" ]; then cd ~/Library/Caches/Firefox/ /opt/local/bin/rsync -av --delete Profiles/ Profiles_/ # ^- szerkesztve, a 2 paraméter rossz sorrendben volt (hrgy84,Elbandi) /sbin/umount /Volumes/$VolumeName /bin/rm Profiles /bin/mv Profiles_ Profiles else echo "Usage: $0 [start|stop]" exit 1 fi exit 0
Mivel mostanában többször előfordult, hogy újra kellett indítani a gépet és nyilván elfelejtettem elindítani ezt a script-et, felmerült az ötlet, hogy induljon el magától, és kikapcsoláskor, vagy kijelentkezéskor csinálja is vissza a dolgokat, ahogy kell :) Ímeg a login/logout scriptek:
file: Scripts/loginhook.sh
#!/bin/bash LOGINHOOKLOG=/var/log/loginhook.log echo "** LoginHook starting at $(/bin/date '+%Y-%m-%d %H:%M:%S') ..." >> $LOGINHOOKLOG /Users/majki/Scripts/firefox-cache-ramdisk.sh start >> $LOGINHOOKLOG echo "** LoginHook finished at $(/bin/date '+%Y-%m-%d %H:%M:%S')" >> $LOGINHOOKLOG
file: Scripts/logouthook.sh
#!/bin/bash LOGOUTHOOKLOG=/var/log/logouthook.log echo "** LogoutHook starting at $(/bin/date '+%Y-%m-%d %H:%M:%S') ..." >> $LOGOUTHOOKLOG /Users/majki/Scripts/firefox-cache-ramdisk.sh stop >> $LOGOUTHOOKLOG echo "** LogoutHook finished at $(/bin/date '+%Y-%m-%d %H:%M:%S')" >> $LOGOUTHOOKLOG
A végére pedig jöjjön a lényegi rész, hogyan oldjuk meg, hogy ezek a scriptek elinduljanak a megfelelő esetekben. Ennyire egyszerű:
sudo defaults write com.apple.loginwindow LoginHook /Users/majki/Scripts/loginhook.sh sudo defaults write com.apple.loginwindow LogoutHook /Users/majki/Scripts/logouthook.sh
- mn3monic blogja
- A hozzászóláshoz be kell jelentkezni
- 1071 megtekintés
Hozzászólások
Köszi.
-1 napos (holnaptól) Mac Mini tulajdonosként segítségedet kérném, hogy ilyen szintű infók az OSX-ről hol szerezhetőek be?
--
Sent from my hand
- A hozzászóláshoz be kell jelentkezni
Google :)
--
HUPbeszolas FF extension
- A hozzászóláshoz be kell jelentkezni
Hivatalosnak nevezhető doksi ohne?
- A hozzászóláshoz be kell jelentkezni
Nem tudom van-e, én nem is kerestem. Ami nekem kell, azt google-ban megtalálom.
--
HUPbeszolas FF extension
- A hozzászóláshoz be kell jelentkezni
Szerintem célszeű így ellenőrizni:
[ x"$1" = x'start' ]
Nem az = vs. ==-re gondolok, bash-ben mindegy, hanem az x-re. Ha jól sejtem, a mostani ellenőrzésed hibát fog adni, ha paraméterül speciélis karaktereket, pl. (, ), [, ] használsz. Illetve próbálgatom, nem is itt számít, hanem egyéb konstrukciókban:
a='('; [ "$a" = "start" -a -d /bin ]; echo $?
bash: [: `)' expected, found start
Ugyanakkor:
a='('; [ x"$a" = x"start" -a -d /bin ]; echo $?
1
Az a lényeg, hogy a helyettesített zárójelet simán operátornak nézi, ha jól látom.
tr [:lower:] [:upper:] <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
Eleve []-t nem hasznalunk, hanem a "test"-et szokjuk meg.
---
pontscho / fresh!mindworkz
- A hozzászóláshoz be kell jelentkezni
Találkoztál már olyan rendszerrel, ahol a [ nem volt vagy linkelve a test-re, vagy egyszerűen a test egy másolata a /bin alatt?
--
HUPbeszolas FF extension
- A hozzászóláshoz be kell jelentkezni
Igen. Plusz shell alatt az ilyen potcselekvesekkel, mint pl. a [], mindig csak a baj van.
---
pontscho / fresh!mindworkz
- A hozzászóláshoz be kell jelentkezni
Akkor ezt mostantól szem előtt tartom, köszi.
--
HUPbeszolas FF extension
- A hozzászóláshoz be kell jelentkezni
Ebben az esetben tökmindegy, ellenben a te példád szépen inkább így nézne ki:
a='('
[[ $a = "(" ]] && echo equal
(az első zárójelet elírtam, oda is kettő kell, javítva)
- A hozzászóláshoz be kell jelentkezni
Azért használok egy szögletes zárójelet, s nem kettőt, mert az utóbbi bash-only megoldás. Annyiban viszont hülyeség a részemről, hogy máshol viszont kihasználom a bash feature-eit, nem írok hordozható scripteket, akkor meg ugye mindegy. :)
tr [:lower:] [:upper:] <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
/opt/local/bin/rsync -av --delete Profiles_/ Profiles/
Ezt nem forditva akartad irni? Ha jol ertem, a Profiles egy link a ramdiskre, a Profiles_ az meg... ooo... ? Mintha a stopnal nem is nagyon lenne krealva ilyen. Valami ott a stop kornyeken logikailag nekem nem jon ossze.
--
Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. | Gentoo Portal
- A hozzászóláshoz be kell jelentkezni
Akkor nézd át jobban.
--
HUPbeszolas FF extension
- A hozzászóláshoz be kell jelentkezni
ez mondjuk nekem sem vilagos :(
rasynceled a Profile_ tartalmat a ramdiskes cuccra (Profile), utana meg torlod?
Masik, azt megnezted hogy a start akkor is jol mukodik ha nemvolt elotte szabalyos stop (elment a meku/lefagyott/kibokted/akarmi)?
--
A vegtelen ciklus is vegeter egyszer, csak kelloen eros hardver kell hozza!
- A hozzászóláshoz be kell jelentkezni
Aha, tényleg, igazatok van :) A két paramétert meg kell cserélni. Azt nem teszteltem, hogy mi van ha úgy indítom, hogy nem állt vissza rendesen, de javítottam a script-et úgy, hogy észreveszi, ha nem volt normális leállás, és legalább a könyvtárakat rendberakja.
--
HUPbeszolas FF extension
- A hozzászóláshoz be kell jelentkezni
Ha sűrűn hozzányúl a FF a disk-en lévő cache-éhez, az amúgy is bekerül a RAM cache-be, nem? Persze onnét kikerülhet abban az esetben, ha több adatot olvas fel a rendszer közben mint a szabad RAM - de ha nem, akkor elvileg úgyis benne lesz a RAM-ban - a disk-re kiírni meg ráér a háttérben a rendszer. Persze ez akkor működhet, ha hosszabb használat után a szabad memóriából a cache-t is levéve még mindig van szabad mem.
Mondjuk nálam 1 GB a disk-en lévő Chrome-hoz tartozó cache, de ha megnyitom pl. az index.hu-t és közben nézem a disk terhelést, akkor első megnyitáskor látszik hogy sok I/O van, de többszöri megnyitásra közel nulla.
Tehát ez amit csinálsz, nem éppen a rendszer által amúgy is végzett cache-elés megkerülésének rossz módja? Mert ha nálad is 1 GB körül van a FF cache - ami csak hízni fog idővel - akkor használattól függetlenül feleslegesen foglalja a fizikai memóriát - ha meg amúgy is sok RAM van a gépedben, akkor a rendszer cache-nek is lesz elég hely - és legalább mindig az lesz a cache-ben ami a legsűrűbben felolvasásra kerül (tudom komplex ez az algoritmus, de a lényeg ez).
Kieg.: Ha meg boot után manuálisan be akarod tolni a cache-be a FF cache-t, talán elég lenne egy (find | xargs cat) >/dev/null vagy hasonló szerintem.
- A hozzászóláshoz be kell jelentkezni
Ennek az az egyedüli lényege, hogy ne legyen fölösleges írás az SSD-re. Firefox-ban meg amúgy is kikapcsolható a disk cache, ellenben Safari-nál nem tudtam ezt megtenni, így lett ez a megoldás.
--
HUPbeszolas FF extension
- A hozzászóláshoz be kell jelentkezni
Ha az SSD írástól való kímélése a cél, akkor érthető, mert amúgy írogat folyamatosan FF és Chrome is. Ha tmpfs-re átteszem a .mozilla mappát és vissza linkelem, akkor nulla az írások száma böngészés közben.
Viszont akkor éppen ezért a FF cache-t nem tenném a RAM-ba a fentiek miatt amit írtam. Mert azt így is úgy is vissza akarod (fixme) írni a disk-re - ha másnem logout-kor. És itt két eset lehet:
1) keletkezik új FF cache adat - ezt akkor már lehet hogy mindegy lenne, ha azonnal kiírod disk-re (hiba esetén azért mégis a RAM-ból veszik el az adat)
2) ha nem keletkezik új cache adat, akkor meg úgyis bent lesz a rendszer cache-ben a memóriában
Ezért szerintem elég lenne a profil-ból a Cache kivételével a többit tmpfs-re tenni. A profil úgysem foglal sok helyet szemben a Cache mappával. Ezt ki is próbáltam: a ~/.mozilla mappát átmozgattam a Linux-omon /dev/shm/ -be ami tmpfs, ebből a mappából a Cache-t meg visszamozgattam a disk-re, a helyére meg vissza symlink-eltem - és előzőleg már megtekintett lapok betöltésekor nincs sem írás, sem pedig olvasás a FF folyamat részéről.
- A hozzászóláshoz be kell jelentkezni
Igen, de így a sok írás helyett csak egyszer kell kiírni logout-kor, ráadásul egyáltalán nem számít, ha az adat elveszik (előfordult már sokszor), hiszen az csak cache. A profilból csak a cache van kitéve ram-ba, a többi nem.
--
HUPbeszolas FF extension
- A hozzászóláshoz be kell jelentkezni
Még valami: az írások számának csökkentéséhez vannak OS X-en a Linux-os ext4 paramétereihez hasonlók, úgymint noatime, meg commit=sec? Gondolom biztos tudja, és azért globálisan sokat segít, mert hiába nem ír a FF, ha másik folyamat tolja ki a biteket.
- A hozzászóláshoz be kell jelentkezni
Igen van, be is vannak állítva. Sorry, de hanyagoljuk ezeket a javaslatokat, nem kértem őket, csak blogoltam egyet, hátha másnak jól jön hogy kell login/logout scripteket írni osx alatt.
--
HUPbeszolas FF extension
- A hozzászóláshoz be kell jelentkezni
Ezen a megjegyzéseden meglepődtem. A hozzászólásoktól, észrevételektől a blogod nem lesz értéktelenebb, ugyanolyan kék marad bárki számára. :) Meg aztán többnyire nem felkérésre szólunk hozzá a különféle témákhoz, hanem azért, mert valami eszünkbe jut róla.
tr [:lower:] [:upper:] <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
Persze, nincs is ezzel semmi baj, csak már olyan érzésem volt a sok tanácstól, mintha ma láttam volna először számítógépet :)
--
HUPbeszolas FF extension
- A hozzászóláshoz be kell jelentkezni
Ezt nem feltételezte senki. Viszont azt áruld el - nagyon off -, hogy bizonyos esetekben a HUPbeszólás a következő, előző új hozzászólás nyilacskáira kattintva miért nem csinál semmit? Van, amikor nem ugrik oda. Netán +1-es hozzászólásra mutat, azt elrejted, s nem lesz hivatkozás?
Most már on. :)
tr [:lower:] [:upper:] <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
Pontosan :) Ha +1 van, vagy hasonló elrejtett, akkor nem tud oda ugorni. Akkor a menüben vissza lehet kapcsolni, hogy mutassa meg az elrejtett hozzászólásokat, onnantól működik :) Mellesleg működik Safari-n is, én azon használom már hetek óta. Lehet hogy az is kikerül public-ba.
--
HUPbeszolas FF extension
- A hozzászóláshoz be kell jelentkezni
Kérhetek updated release-t? :)
tr [:lower:] [:upper:] <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
Előreláthatólag valamikor a jövő héten lesz új release.
--
HUPbeszolas FF extension
- A hozzászóláshoz be kell jelentkezni
Köszi :)
tr [:lower:] [:upper:] <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni