<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>controlc.de &#187; launchd</title>
	<atom:link href="http://controlc.de/tag/launchd/feed/" rel="self" type="application/rss+xml" />
	<link>http://controlc.de</link>
	<description>mehr als nur ein Notizblock</description>
	<lastBuildDate>Fri, 13 Jan 2012 18:37:18 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>mac &#124; launchd näher beleuchtet</title>
		<link>http://controlc.de/2009/05/14/mac-launchd-naher-beleuchtet/</link>
		<comments>http://controlc.de/2009/05/14/mac-launchd-naher-beleuchtet/#comments</comments>
		<pubDate>Wed, 13 May 2009 22:16:07 +0000</pubDate>
		<dc:creator>controlc.de</dc:creator>
				<category><![CDATA[apple]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[backup]]></category>
		<category><![CDATA[launchd]]></category>
		<category><![CDATA[lingon]]></category>
		<category><![CDATA[macosx]]></category>

		<guid isPermaLink="false">http://controlc.de/?p=359</guid>
		<description><![CDATA[In meinem Backup-Beitrag, welchen ich ursprünglich für macfidelity geschrieben habe, bin ich auf das All-in-one-Paket von Apple namens launchd eingegangen. Da wider Erwarten, das Mounten der Platten auf meinem iMac nicht geklappt hat, habe ich mich auf die Suche nach dem Fehler gemacht. Zuerst dachte ich, das ich vielleicht das plist-File, welches man pro Dienst [...]]]></description>
			<content:encoded><![CDATA[	<p>In meinem <a href="http://controlc.de/2009/05/08/einrichtung-eines-backups/">Backup-Beitrag</a>, welchen ich ursprünglich für <em><a href="http://macfidelity.de/2009/04/30/mac-einrichtung-eines-backups/">macfidelity</a></em> geschrieben habe, bin ich auf das All-in-one-Paket von Apple namens launchd eingegangen. Da wider Erwarten, das Mounten der Platten auf meinem iMac nicht geklappt hat, habe ich mich auf die Suche nach dem Fehler gemacht. Zuerst dachte ich, das ich vielleicht das plist-File, welches man pro Dienst erstellen muß, noch einmal bearbeitet und dann die Warnung von <a href="http://tuppis.com/lingon/">Lingon</a> übersehen habe</p>
	<p><a href="http://controlc.de/wp-content/uploads/2009/05/lingon-warning.png" class="floatbox" rev="group:359"></a><a href="http://controlc.de/wp-content/uploads/2009/05/lingon-warning.png" class="floatbox" rev="group:359 caption:`lingon-warning`"><img class="alignnone size-medium wp-image-360" title="lingon-warning" src="http://controlc.de/wp-content/uploads/2009/05/lingon-warning-300x141.png" alt="lingon-warning" width="300" height="141" /></a><br />
<span id="more-359"></span><br />
Also fix den iMac neugestartet und ins Logfile geschaut und dabei folgendes gefunden:</p>
	
<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">com.apple.launchctl.System<span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">2</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>: launchctl: Dubious ownership on <span style="color: #c20cb9; font-weight: bold;">file</span> <span style="color: #7a0874; font-weight: bold;">&#40;</span>skipping<span style="color: #7a0874; font-weight: bold;">&#41;</span>: <span style="color: #000000; font-weight: bold;">/</span>Library<span style="color: #000000; font-weight: bold;">/</span>LaunchDaemons<span style="color: #000000; font-weight: bold;">/</span>de.something.hddmount.plist
com.apple.launchctl.System<span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">2</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>: launchctl: Dubious ownership on <span style="color: #c20cb9; font-weight: bold;">file</span> <span style="color: #7a0874; font-weight: bold;">&#40;</span>skipping<span style="color: #7a0874; font-weight: bold;">&#41;</span>: <span style="color: #000000; font-weight: bold;">/</span>Library<span style="color: #000000; font-weight: bold;">/</span>LaunchDaemons<span style="color: #000000; font-weight: bold;">/</span>de.something.hddunmount.plist</pre></div></div>

	<p>Was hatte ich gemacht? Ich hatte auf meinem MBP mit Lingon rumgespielt und dabei die beiden plists erstellt. Diese hatte ich, der Einfachheit halber, einfach auf den iMac in den Ordner /Library/LaunchDaemons kopiert und gehofft es wäre alles ok. Ein kurzes »ls –l /Library/LaunchDaemons« brachte die Bestätigung: Die beiden Scripte hatten nicht die richtige Berechtigung.</p>
	
<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">chown</span> root:wheel <span style="color: #000000; font-weight: bold;">/</span>Library<span style="color: #000000; font-weight: bold;">/</span>LaunchDaemons<span style="color: #000000; font-weight: bold;">/</span>de.something.hdd<span style="color: #000000; font-weight: bold;">*</span></pre></div></div>

	<p>und schon war alles in Ordnung. Nun hatte ich natürlich diesmal nicht die Warnung von Lingon vergessen und wollte schon den iMac erneut starten. Aber es muß doch eine Möglichkeit geben, den launchd davon zu überzeugen die neuen plists zu aktivieren. Nach ein langen Suche wußte ich zumindest soviel: launchd selber kann man nicht neustarten, da es direkt nach dem Bootvorgang selber die Dienste erst startet. Schaut man in die Prozessliste, so erkennt man, das launchd die PID 1 hat — das verheißt nix Gutes. Ok, dann muß es halt eine andere Möglichkeit geben. In den man-pages findet man <a href="http://developer.apple.com/documentation/Darwin/Reference/ManPages/man1/launchctl.1.html">launchctl</a></p>
	<blockquote>
	<pre class="manpages"><tt></tt><tt><strong>NAME</strong>
     <strong>launchctl</strong> -- Interfaces with launchd
	
<strong>SYNOPSIS</strong>
     <strong>launchctl</strong> [<span style=\"text-decoration: underline;\">subcommand</span> [<span style=\"text-decoration: underline;\">arguments</span> <span style=\"text-decoration: underline;\">...</span>]]
	
<strong>DESCRIPTION</strong>
     <strong>launchctl</strong> interfaces with <strong>launchd</strong> to load, unload daemons/agents and generally control <strong>launchd</strong>.
     <strong>launchctl</strong> supports taking subcommands on the command line, interactively or even redirected from stan-<span class=\"whiteout\" style=\"color: #ffffff;\">dard standard</span>
     dard input.  These commands can be stored in <strong>$HOME/.launchd.conf</strong> or <strong>/etc/launchd.conf</strong> to be read at the
     time <strong>launchd</strong> starts.
</tt></pre>
	</blockquote>
	<p><span>In den weiteren Optionen findet man die Subcommands »load« und »unload« sowie »list«.</span></p>
	
<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> launchctl list <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">grep</span> de.something</pre></div></div>

	<p><span>kann man sich auflisten lassen, ob die plists geladen wurden.</span></p>
	
<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> launchctl load <span style="color: #000000; font-weight: bold;">/</span>Library<span style="color: #000000; font-weight: bold;">/</span>LaunchDaemons<span style="color: #000000; font-weight: bold;">/</span>de.something.hddmount.plist
<span style="color: #c20cb9; font-weight: bold;">sudo</span> launchctl load <span style="color: #000000; font-weight: bold;">/</span>Library<span style="color: #000000; font-weight: bold;">/</span>LaunchDaemons<span style="color: #000000; font-weight: bold;">/</span>de.something.hddunmount.plist</pre></div></div>

	<p><span>nimmt die beiden plists auf.<br />
</span>
</p>
]]></content:encoded>
			<wfw:commentRss>http://controlc.de/2009/05/14/mac-launchd-naher-beleuchtet/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>mac &#124; Einrichtung eines Backups</title>
		<link>http://controlc.de/2009/05/08/einrichtung-eines-backups/</link>
		<comments>http://controlc.de/2009/05/08/einrichtung-eines-backups/#comments</comments>
		<pubDate>Fri, 08 May 2009 09:01:04 +0000</pubDate>
		<dc:creator>controlc.de</dc:creator>
				<category><![CDATA[apple]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[backup]]></category>
		<category><![CDATA[cron]]></category>
		<category><![CDATA[how to]]></category>
		<category><![CDATA[ical]]></category>
		<category><![CDATA[launchd]]></category>
		<category><![CDATA[lingon]]></category>
		<category><![CDATA[macosx]]></category>
		<category><![CDATA[time machine]]></category>

		<guid isPermaLink="false">http://controlc.de/?p=213</guid>
		<description><![CDATA[Nachdem ich jetzt doch vorgenommen habe meinen Blog aufzuhübschen, möchte hier noch mal meinen Artikel, den ich für macfidelity geschrieben habe, publizieren. Das Problem Ich habe einen iMac, welcher als Fernseher, Videorekorder, Musikbibliothek, Bücherdatenbank und als Email-Server (Windows-Server in einer VM) funktioniert. Aus diesem Grund ist der iMac rund um die Uhr an. Wenn so [...]]]></description>
			<content:encoded><![CDATA[	<p><em>Nachdem ich jetzt doch vorgenommen habe meinen Blog aufzuhübschen, möchte hier noch mal meinen <a href="http://macfidelity.de/2009/04/30/mac-einrichtung-eines-backups/">Artikel</a>, den ich für <strong><a href="http://macfidelity.de">macfidelity</a></strong> geschrieben habe, publizieren.</em></p>
	<h2><strong>Das Problem</strong></h2>
	<p>Ich habe einen iMac, welcher als Fernseher, Videorekorder, Musikbibliothek, Bücherdatenbank und als Email-Server (Windows-Server in einer VM) funktioniert. Aus diesem Grund ist der iMac rund um die Uhr an. Wenn so wichtige Daten auf dem Rechner liegen, dann bietet es sich an regelmäßig ein Backup zu machen. In meiner ursprünglichen Planung dachte ich mir: “He, OSX hat Time Machine mit dabei, da brauchst Du Dir um nix mehr Sorgen zu machen.” — Weit gefehlt!<span id="more-213"></span></p>
	<ul>
	<li>Time Machine will alle Stunde ein Backup machen — warum auch immer?! Ok, das Problem kann man mit dem <a href="http://timesoftware.free.fr/timemachineeditor/">Time Machine Editor</a> eingrenzen.</li>
	<li>Für Time Machine ist die VM eine einzige Datei, welche sich natürlich immer verändert und deswegen immer wieder neu komplett weggeschrieben wird — da reicht die größte Backupplatte nicht!</li>
	</ul>
	<h2><strong>Die Lösung</strong></h2>
	<p>Zuerst möchte ich Time Machine davon überzeugen nur einmal in der Nacht ein Backup zu machen. Dazu verwende ich den <a href="http://timesoftware.free.fr/timemachineeditor/">Time Machine Editor</a>. Dieses Programm gibt die Möglichkeit die fest eingestellten Zeiten für Time Machine von Apple zu editieren. Hier hat man die Möglichkeit entweder in einem festen Intervall</p>
	<p><a href="http://controlc.de/wp-content/uploads/2009/05/time-machine-editor-intervall.jpg" class="floatbox" rev="group:213 caption:`time-machine-editor-intervall`"><img class="size-full wp-image-349 alignnone" title="time-machine-editor-intervall" src="http://controlc.de/wp-content/uploads/2009/05/time-machine-editor-intervall.jpg" alt="time-machine-editor-intervall" width="348" height="219" /></a></p>
	<p>oder aber zu festgelegten Zeiten</p>
	<p><a href="http://controlc.de/wp-content/uploads/2009/05/time-machine-editor-calendar.jpg" class="floatbox" rev="group:213 caption:`time-machine-editor-calendar`"><img class="alignnone size-full wp-image-350" title="time-machine-editor-calendar" src="http://controlc.de/wp-content/uploads/2009/05/time-machine-editor-calendar.jpg" alt="time-machine-editor-calendar" width="377" height="293" /></a></p>
	<p>Time Machine zu starten.</p>
	<p>Das Problem mit den großen Backups der VM erschlage ich einfach damit, das ich den Ordner der VM vom Time Machine Backup ausschließe und das Backup von Windows selber machen lasse. Dazu habe ich auf meiner externen Festplatte einfach zwei Partitionen angelegt, eine Partition habe ich Time Machine zugeordnet, die andere “gehört” der VM. Es ist auch eine mit HFS formatierte Partition, die ich über VMWares Ordnerfreigabe der VM zugeordnet habe. Der Vorteil dabei ist, das für die VM diese Partition ein Netzlaufwerk ist, welches auch mal weg sein kann, ohne das Windows sich dran stört.</p>
	<h2><strong>Der Zwischenstand</strong></h2>
	<p>Somit sollte das alles laufen und ich glücklich sein: Leider nicht ganz. Ich muß zwar nicht mehr um den Speicherplatz meiner externen Festplatte bangen und die Backups werden auch schön in der Nacht gemacht. Aber leider fährt auch bei Nichtbenutzung aller ca. 10 Minuten die externe Festplatte hoch um nach ca. 10 Minuten wieder herunterzufahren — sehr unbefriedigend! Nicht nur, das es der Platte nicht sonderlich gut tut, es nervt auch rein geräuschtechnisch und etwas Strom verbraucht es auch!</p>
	<h2><strong>Die Zwischenlösung</strong></h2>
	<p>Da ich nicht herausfinden konnte, was die Platte immer wieder aufwecken läßt (Ein Abschalten der Spotlightindizierung auf dem Laufwerk brachte nicht das gewünschte Ergebnis), kam ich auf folgende Idee:</p>
	<p>Warum nicht die Festplatte vorm dem Start des Backups mounten und danach wieder unmounten? Klingt doch ganz gut. Im Terminal ist das einfach gemacht:</p>
	<blockquote><p><em>diskutil mount /dev/disk2s2</em></p></blockquote>
	<p>damit kann man die Platte einbinden.</p>
	<blockquote><p><em>diskutil unmount /dev/disk2s2</em></p></blockquote>
	<p>und damit wieder ausbinden. (<em><strong>Fidel-Edit:</strong> disk2s2 trifft im Falle von makomi zu — das kann bei euch gleich sein — muss es aber nicht — Der Mount Befehl im Terminal sollte hier weiterhelfen</em>)</p>
	<p>Nun muß das Alles nur noch zeitgesteuert gestartet werden. Auch dafür hat OSX wieder mehrere Lösungen parat:</p>
	<h3>iCal</h3>
	<p>iCal bietet an, für eine Erinnerung ein Skript auszuführen:</p>
	<p><a href="http://controlc.de/wp-content/uploads/2009/05/ical-skript.jpg" class="floatbox" rev="group:213 caption:`ical-skript`"><img class="alignnone size-full wp-image-355" title="ical-skript" src="http://controlc.de/wp-content/uploads/2009/05/ical-skript.jpg" alt="ical-skript" width="210" height="299" /></a></p>
	<h3>crontab</h3>
	<p>Als eine Unix-afiner Mensch kenne ich natürlich <a href="http://de.wikipedia.org/wiki/Cron">cron</a>. In OSX liegen die systemweiten Cron-Dateien unter /etc/periodic und dann in den jeweiligen Unterordnern daily, weekly, monthly. Jeder Benutzer kann sich auch ein eigenes crontab einrichten. Dies geht mit dem Befehl “crontab –e”. Aber warum die Kommandozeile bemühen, wenn es auch eine GUI dafür gibt: <a href="http://h775982.serverkompetenz.net:9080/abstracture_public/projects-en/cronnix">CronniX</a>.</p>
	<p>Das Programm ist sehr aufgeräumt und selbsterklärend:</p>
	<p><a href="http://controlc.de/wp-content/uploads/2009/05/cron-ubersicht.png" class="floatbox" rev="group:213 caption:`cron-ubersicht`"><img class="alignnone size-full wp-image-356" title="cron-ubersicht" src="http://controlc.de/wp-content/uploads/2009/05/cron-ubersicht.png" alt="cron-ubersicht" width="455" height="286" /></a></p>
	<p>Die beiden Tasks sind schnell angelegt:</p>
	<p><a href="http://controlc.de/wp-content/uploads/2009/05/cron-mount.png" class="floatbox" rev="group:213 caption:`cron-mount`"><img class="alignnone size-full wp-image-348" title="cron-mount" src="http://controlc.de/wp-content/uploads/2009/05/cron-mount.png" alt="cron-mount" width="307" height="310" /></a></p>
	<p><a href="http://controlc.de/wp-content/uploads/2009/05/cron-unmount.png" class="floatbox" rev="group:213 caption:`cron-unmount`"><img class="alignnone size-full wp-image-357" title="cron-unmount" src="http://controlc.de/wp-content/uploads/2009/05/cron-unmount.png" alt="cron-unmount" width="307" height="310" /></a></p>
	<h3>launchd</h3>
	<p>Und schließlich gibt es Apples Verbesserung zu cron genannt launchd. Ich habe mich schon immer gefragt, was das eigentlich ist. Nun, die Erklärung ist recht einfach: Es ist die Ablösung von cron, da es nicht nur zeit– oder intervallgesteuert sondern auch ereignisgesteuert Aktionen ausführen kann.</p>
	<p>Eine guten Überblick gibt dazu Apples <a href="http://developer.apple.com/macosx/launchd.html">Getting started with launchd</a>. Es muß also ein preference file erstellt werden — ein xml. Bevor ich sowas händig im Texteditor selber baue, schau ich doch lieber nach, ob es nicht dafür schon ein kleines Programm gibt und siehe da: Die kurze Suche ergab <a href="http://www.codepoetry.net/products/launchdeditor">Launchd Editor</a> und <a href="http://tuppis.com/lingon/">Lingon</a>. Während ersteres ein Sharewareprodukt ist (ok, 5$ ist nicht der Hit, aber das Programm wurde das letze Mal 2005 aktualisiert), ist zweiteres Opensource.</p>
	<p>Lingon ist sehr übersichtlich.</p>
	<p><a href="http://controlc.de/wp-content/uploads/2009/05/lingon-startscreen.png" class="floatbox" rev="group:213 caption:`lingon-startscreen`"><img class="alignnone size-full wp-image-351" title="lingon-startscreen" src="http://controlc.de/wp-content/uploads/2009/05/lingon-startscreen.png" alt="lingon-startscreen" width="556" height="568" /></a></p>
	<p>Wenn man einen neuen Task anlegen möchte, muß man sich entscheiden wann er aktiv werden soll:</p>
	<p><a href="http://controlc.de/wp-content/uploads/2009/05/lingon-auswahl.png" class="floatbox" rev="group:213 caption:`lingon-auswahl`"><img class="alignnone size-full wp-image-354" title="lingon-auswahl" src="http://controlc.de/wp-content/uploads/2009/05/lingon-auswahl.png" alt="lingon-auswahl" width="323" height="137" /></a></p>
	<p>In meinem Fall möchte ich, das die Festplatte auch dann gemountet und wieder ausgeworfen wird, wenn keiner angemeldet ist, also wird es ein User Daemon:</p>
	<p>Und so sehen die beiden Task aus:</p>
	<p><a href="http://controlc.de/wp-content/uploads/2009/05/lingon-mount.png" class="floatbox" rev="group:213 caption:`lingon-mount`"><img class="alignnone size-full wp-image-353" title="lingon-mount" src="http://controlc.de/wp-content/uploads/2009/05/lingon-mount.png" alt="lingon-mount" width="556" height="568" /></a></p>
	<p><a href="http://controlc.de/wp-content/uploads/2009/05/lingon-unmount.png" class="floatbox" rev="group:213 caption:`lingon-unmount`"><img class="alignnone size-full wp-image-352" title="lingon-unmount" src="http://controlc.de/wp-content/uploads/2009/05/lingon-unmount.png" alt="lingon-unmount" width="556" height="568" /></a></p>
	<p>Also einfaches Erstellen eines Tasks in nur drei Schritten.</p>
	<p>Klingt schon mal gut und als Zwischenlösung macht es genau das, was ich möchte.</p>
	<h2><strong>Die Wünsche</strong></h2>
	<p>Natürlich schreit das Ganze nach Optimierungen:</p>
	<p>Nachdem die Platte eingebunden ist, könnte doch gleich Time Machine angestoßen werden um die Daten zu sichern. Aber wie ich Time Machine per Kommandozeile dazu überreden kann ein Backup zu machen habe ich noch nicht herausgefunden. Und wie kann ich Time Machine sagen, das nach erfolgtem Backup wiederrum ein Skript ausgeführt werden kann (nämlich das Unmounten der Festplatte)? Oder aber wie funktioniert das Skripting mit VMWare? Wie kann ich dort einen Befehl starten und nach Beenden des Befehls den Statuscode an ein Skript in OSX zurückgeben?
</p>
]]></content:encoded>
			<wfw:commentRss>http://controlc.de/2009/05/08/einrichtung-eines-backups/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

