OS X Script für Konsolenbefehl

ingope

Moderator im Ruhestand
Themenstarter
Registriert
26 Jan. 2007
Beiträge
15.953
Mal schauen, vielleicht haben wir ja auch einen OS X Expterten hier (obwohl das wohl sehr ähnlich bei Linux sein wird - Unix)

Mein MacBook hat letzte Woche einen neue WD 500 GB Platte spendiert bekommen
da mir die ab Werk zu klein war.
Die WDs haben ja leider öfter mal Probleme mit dem Advanced Power Managment (APM)
wie auch meine 500er.
Sie klickt leider wenn am Book nicht viel gearbeitet wird ständig.

So habe ich bereits nach 14 Betriebsstunden 2600 Load Cycle Counts.

Also, mit dem Thema beschäftigt. Folgende Lösung gibt es:

http://mckinlay.net.nz/hdapm/

Einfach das APM auf max setzen damit die Platte gar nicht erst versucht Strom zu sparen.

Gleich vorab: Ich habe versteckte Datein mit TinkerTool bereits sichtbar gemacht.

In dem obigen Link ist eine hdapm Datei die unter /usr/local/bin kopiert werden soll.
Da geht es schon mal los, ich habe usr/ aber dann nicht /local sondern direkt /bin (/local nicht vorhanden)

Also, hdapm Datei unter /usr/bin gespeichert

Damit das Ganze dann auch beim Start des Books mitgeladen wird ist noch eine plist Datei enthalten die unter Libary/LaunchDaemons abgelegt werden soll.

Gesagt getan. Die plist liegt im passenden Verzeichnis.

In der plist Datei wird aber natürlich nach usr/local/bin verwiesen.
Dies habe ich angepasst zu /usr/bin

Problem ist, das der Befehl "hdapm disk 0 max" beim Start nicht ausgeführt wird.
Daran zu erkennen das der Load Cycle Count fast minütlich steigt.

Öffne ich aber die Konsole und gebe direkt "hdapm disk 0 max" führt OS X das auch mit
Erfolg aus und der Load Cylce Count ändert sich nicht mehr.

Was genau mache ich falsch?

Notfalls: Wie müsste ein Skript aussehen das ich vom Desktop aus nach jedem Booten anklicken kann damit der Befehlt ausgefüht wird?

Danke schon mal im voraus.

Grüße
Ingo
 
Der OSX-Meister hier im Forum ist übrigens tcone! :whistling:
Der hat im Studium UNIX auf den Sun Kisten lernenen müssen.

Schick ihm doch eine PN mit Hinweis auf hier...

Klaus
 
Uih danke !
Ich schreibe ihn sofort mal an :P

LG
Ingo
 
Die LaunchDeamon Files müssen spezielle Rechte und Besitzer haben, sonst lädt launchd die nicht. Müsste iegentlich auch in der Konsole (also dem Programm Konsole) so stehen.

2) welche LaunchDaemons meinst du? Den lokalen benutzer oder den vom System. Also ~/Library/... oder /Library/... - nach meiner Ansicht sollte so ein wesentlicher Dienst für alle User aktiv sein, also in den /Library/LaunchDaemons

Wenn die Datei da rein soll muss sie root:wheel gehören und die Rechte 644 haben. Zu lösen mittels Terminal:
sudo chmod 644 /Pfad/zu/deiner/datei
sudo chown root:wheel /Pfad/zu/deiner/datei
sudo ist dafür da, dass du das mit Rootrechten machst. Admin passwort wird verlangt.
Wenn du "gemeiner" user bist, musst du dich vorher als Admin anmelden, entweder ein OS X Benutzerwechsel (unnerdig) oder ein
su <mein admin kontoname>
damit meldest du dich im Terminal als anderen Benutzer an.

Ach ja, wenn dir das nicht geheuer ist mit dem Terminal kannst du das auch über die Dateiinformationen machen. nur vorher auf das Schloss klicken und die Bearbietung der Rechte aktivieren.
In diesem Fall musst du den Besitzer "System" (== Root) einstellen und nur diesem "Lesen + schreiben" geben, dem "wheel" und "everyone" nur "lesen".

Zu deinem local Problem: Das Verzeichnis muss da sein, sonst würden ein paar Anwendungen nicht laufen.
Sicher dass du unter /usr/local/bin nix findest?
 
Zuletzt bearbeitet:
Alternativ könntest du den Befehl auch mittels AppleScript ausführen lassen, das Script ganze dann als Programm kompilieren und in die Startobjekte mit aktivierter "Ausblenden"-Option eintragen.
 
@ horatio - Danke schonmal !

Also local ist irgendwie nicht vorhanden, schau mal, hier im Ordner /usr:

local.jpg

Zu den Daemons:
Ich meine die System Daemons.
Im Benutzer eigenen gibts keine LaunchDaemons sondern nur LaunchAgents.
Daher dachte ich das es in den System Libary muss.
Ist das korrekt?

Ok, das File braucht also andere Rechte. Ich teste es gleich mal...

Edit:
Die Datei hatte schon die Rechte wie es ausieht?
Schau mal:
Bildschirmfoto 2011-03-30 um 14.12.09.jpg

Noch´n Edit:

So sieht die plist aus:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC
"-//Apple Computer//DTD PLIST 1.0//EN" "
http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>hdapm</string>
<key>Disabled</key>
<false/>
<key>ProgramArguments</key>
<array>
<string>/usr/local/bin/hdapm</string>
<string>disk0</string>
<string>max</string>
</array>
<key>ServiceDescription</key>
<string>Set ATA Advanced Power Management level</string>
<key>RunAtLoad</key>
<true/>
<key>LaunchOnlyOnce</key>
<true/>
</dict>
</plist>


@ Yassin - danke dir. Nun gehts aber schon los, wie compile ich das denn :) Unix Noob, you know? :)
Das Script habe ich wohl soweit hinbekommen, siehe:

Anhang anzeigen 35244

Beim Ausführen funktioniert es auch, siehe Protokoll unten.

Aber wie mache ich da nun ein ausführbares Programm draus? :)
pencil.png
 
Das geht über "Sichern unter...", dort kannst du unten bei "Dateiformat" statt "Skript" einfach "Programm" auswählen - dann wird das Skript als ausführbares Programm gespeichert.
 
Also wenn du Applescript nehmen willst, mach es gleich mit Automator, das ist noch einfacher und schneller verständlich. Da gibt's die Aktion
Dienstprogramme -> Shell Skript ausführen.

Zum Screenshot Dateisystem:
Ah! - Ich sehe mir das immer per Terminal an, da sehe ich halt alles. Ggf. wird local ausgeblendet. Wenn du also mal im Finder das Terminal aufmachst und dir da /usr ansiehst sieht das ggf. ganz anders aus.

Zu den Rechten:
Ne, die sind falsch. im ersten Eintrag muss da echt "System stehen.
Ich sehe auch gerade, den Benutzer "System" bietet der Dateiinformationen-Dialog gar nicht an, da muss also das Terminal her.
 
@ yassin - Super danke dir ! Klappte. Das war jetzt mal einfach.
Ok, das ist schon mal die Backuplösung.

Mal schauen was Horatio zu den Infos sagt.

Edit:
@ Horatio - Danke. Ich versuche gleich gleich mal und Berichte.

Edit:

Ist es nicht egal wo der hdapm Befehl liegt? Wichtig ist doch nur das er korrekt angesprochen wird?
Also wenn es in /usr/bin liegt dürfte es doch keinen Unterschied zu /usr/local/bin sein?

So, wenn ich die Konsolenbefehle ausführe kommt das:

Anhang anzeigen 35256

auch kann ich nicht einfach in das Verzeichnis wechseln (cd).
Wo mach ich nun schon wieder nen Fehler?

Die plist liegt in /libary/launchdaemons
Dateiname: hdapm.plist
 
Sorry für's warten, hab grad zu tun.

Gross/Kleinschreibung ist im Terminal ganz wichtig. also
/Library/LaunchDeamons/....
Wenn du 'Tab' drückst, vervollständigt dir der das auch, oder schlägt dir alle Möglichkeiten vor.


Und ja, wo der Befehlt liegt ist völlig egal. Wenn die pfade passen, passt's :)

Denke bitte auch dran, die im /LaunchDeamons werden beim Start geladen, nicht beim Login. D.h. um sie zu aktivieren musst du den Rechner komplett neustarten und dich nicht nur ein-/ausloggen. - Das geht nur bei LaunchAgents.

Alternativ kannst du auch dem launchd selbst sagen, dass er die plist jetzt laden soll, indem du
sudo launchd load /pfad/zur/plist/
im Terminal eingibst
 
Zuletzt bearbeitet:
Sorry für's warten, hab grad zu tun.

Na soweit kommst noch das du dich entschuldigen musst :)

Gross/Kleinschreibung ist im Terminal ganz wichtig. also
/Library/LaunchDeamons/....

Auch vorhin probiert, geht trotzdem nicht

Nichtmal "cd libary (Libary) funktioniert. Das Verzeichnis wäre nicht vorhanden? :/

Wenn du 'Tab' drückst, vervollständigt dir der das auch, oder schlägt dir alle Möglichkeiten vor.

Guter Tip, danke. Versuche ich nacher mal.

Und ja, wo der Befehlt liegt ist völlig egal. Wenn die pfade passen, passt's :)

Ok gut, alles andere wäre für mich auch nicht sehr logisch gewesen :)
Also muss ich nicht unbedingt das Zeugs in /local quetschen :)

Denke bitte auch dran, die im /LaunchDeamons werden beim Start geladen, nicht beim Login. D.h. um sie zu aktivieren musst du den Rechner komplett neustarten und dich nicht nur ein-/ausloggen. - Das geht nur bei LaunchAgents.

Ja das ab ich immer. Nach jeder Änderung einen Reboot.

Alternativ kannst du auch dem launchd selbst sagen, dass er die plist jetzt laden soll, indem du
sudo launchd load /pfad/zur/plist/
im Terminal eingibst

Ok, das teste ich nacher auch mal.

Ich komm erst wieder gegen Abend dazu, aber ich Berichte.
Vielen Dank schonmal ! :)
 
Machst du denn auch immer den Slash '/' am Anfang des Pfads?
Wenn man den nicht schreibt wird das aktuelle Verzeichnis als Ausgangspunkt genommen, mit '/' ist die Wurzel des Dateisystems gemeint.

Oder anders:
OHNE Slash RELATIV zum aktuellen dir
MIT Slash ABSOLUT zur Wurzel
 
*harhar* Man was ein dummer Fehler - ich habe ihn aber selbst produziert :)

Nun geht es.

Die "hdapm.plist" wird beim Start nun anscheinend auch geladen bzw. ausgeführt.
Die Load Cycle Count geht jetzt nur noch beim Booten um "1" hoch:

Bildschirmfoto 2011-03-30 um 17.08.47.jpg

Vielen Dank horatio !
Das war eine große Hilfe.

LG
Ingo
 
Ich nehme an, du kennst http://thinkpad-forum.de/threads/10...Unload-Zyklen!-(betrifft-nicht-nur-WD-Green!)

Das klicken kommt bei OS X wohl auch daher, dass er alle x Sekunden Kernel Pages flusht, wobei jedes Mal ein Load/Unload-Zyklus gemacht wird, wenn die Platte eigentlich versucht den Kopf zu parken, weil im idle. (daher auch die erhöten Werte siehe obigen Thread.).
Wäre es nicht besser, FreeDOS/Dos von USB zu booten und mit dem wdidle Tool das ganze zu setzen, alternativ an einem Zweitrechner (das wird direkt in die FW der HDD geschrieben, ist also konsistent.).

Allerdings reagieren manche 2.5" WDs etwas komisch darauf und geben dann noch komischere Geräusche von sich(die Platte fährt dann ständig rauf und runter). Dann sollte man das wieder Rückgängig machen (wieder auf 8 Sekunden) und die APM Einstellung (wie du es jetzt hast) ändern - mit dem Nachteil das der Stromverbrauch höher ist, weil APM noch mehr beeinflusst als das.

Nur so als Anmerkung am Rande :)
 
Zuletzt bearbeitet:
Yep, klar kenn ich deinen Thread :)

Ja die 500er WD Blue klackte ständig wenn am Book nichts gemacht wird.
Kein rauf unter runterfahren, immer so ein klack, klack.... klack, klack und bei jedem mal gibts einen mehr auf den Counter.

Mit der hdapm Lösung wie jetzt bin ich ganz zufrieden. Ok die Platte dreht nun gar nicht mehr runter aber es macht, ich habe es getestet, im Betrieb letzendlich keine 5 min Akkulaufzeit aus.
Ich lese mir deinen Thread nochmal in ruhe durch, ich wollte nur jetzt erstmal eine ad hoc Lösung damit der Counter nächste Woche keine astronomischen Werte hat :)

Klar wäre es besser das über die FW zu machen, dann ist das OS raus und ich brauch da nichts einstellen. Dazu muss ich mich aber erstmal belesen :)

Danke dir.
 
  • ok1.de
  • ok2.de
  • thinkstore24.de
  • Preiswerte-IT - Gebrauchte Lenovo Notebooks kaufen

Werbung

Zurück
Oben