Aller au contenu

[RESOLU] Comprendre launchd


Allegro

Messages recommandés

Bonjour à tous,

Voilà mon souci. J'ai installé Apache2 sur mon Powerbook, et je voudrais qu'il soit lancé à chaque démarrage de mon ordi.

J'imagine qu'il y a plusieurs façons de faire ... après recherches, j'ai cru comprendre que le mieux était d'utiliser launchd.

S'il faut faire comme ça, pourriez-vous m'expliquer quoi taper dans le .plist, parce que je ne comprends pas ce qu'il faut écrire dans <key> ou <string> par exemple ...

Sinon, pourriez-vous m'indiquer quelle méthode choisir ?

Merci d'avance :mdr2:

Lien vers le commentaire
Partager sur d’autres sites

Ah, je crois que je viens de percuter un peu pour launchd ...

D'après ce que je comprends,

<?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>

Bon ça OK, ensuite,

<key> ça serait la "catégorie", Label par exemple,

<string> serait par exemple le titre en lui-même, ce qui donnerait :

<key>Label</key>
<string>monTitre</string>

C'est ça ?

Par contre après, c'est argument que je ne pige pas. Il faut mettre quoi en argument ? C'est obligatoire ?

Ou peut-être que je peux juste indiquer le chemin vers le .sh dans <key>ProgramArguments</key>, sans arguments ...

Lien vers le commentaire
Partager sur d’autres sites

Argument si tu n'en a pas à passer à ton script tu peux laisser vide :transpi:

ex :

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist SYSTEM "file://localhost/System/Library/DTDs/PropertyList.dtd">
<plist version="0.9">
<dict>
	<key>Description</key>
	<string>Apache 2 web server</string>
	<key>OrderPreference</key>
	<string>Late</string>
	<key>Provides</key>
	<array>
			<string>Web services</string>
	</array>
	<key>Uses</key>
	<array>
			<string>Network</string>
			<string>Disks</string>
	</array>
</dict>
</plist>

Tu créer un dossier dans /Library/StartupItems/Test

tu créer un script de lancement nomé Test (très important de garder le même nom que le dossier) du genre

#!/bin/bash
/usr/sbin/apachectl start

et tu ajoutes le .plist en incluant un requires networks et disks.

Au final tu as un dossier avec script + description.

Si tu veux faire du simple voilà ;) Après launchd est super puissant et on peux aller très loin avec :)

Oublie pas de configurer l'utilisateur d'Apache2 pour ne pas qu'il tourne en root.

Lien vers le commentaire
Partager sur d’autres sites

Alors, ta méthode marche très bien ;), et pour m'amuser j'ai expérimenté en rédigeant uniquement le .plist, de la façon suivante (je suis un utilisateur standard, pas admin) : (--> = explications)

<?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>	 --> On va donner un titre
<string>LanceApache2</string>	--> Titre
<key>ProgramArguments</key>   --> On va donner le code à éxécuter
<array>   --> Données multiples
	<string>sudo</string> 
	<string>/usr/local/apache2/bin/apachectl</string>
	<string>start</string>  -- > code (ici sur 3 lignes)
</array>
<key>RunAtLoad</key>  --> On veut lancer l'éxécution du code au démarrage
<true/>  --> oui
</dict>
</plist>

A mon avis, à la place des 3 string dans <array>, on peut en faire 1 seul :

<string>sudo /usr/local/apache2/bin/apachectl start</string>

D'après ce que j'ai compris, <key> correspond à une "catégorie", dont la valeur est donnée juste en dessous par <string> s'il s'agit d'une phrase, <true/> (ou <false/>) si boolean ...

RunAtLoad permet de lancer l'éxécution du code au démarrage.

J'ai placé le .plist dans le dossier /Library/LaunchAgents de mon répertoire personnel. Mais on peut apparemment le placer ailleurs.

Avec cette méthode, je n'ai pas de script additionnel.

Gribouille, je te laisse le soin de corriger mon post (sympa hein :dd:, après tout c'est toi le spécialiste ! :p )

Lien vers le commentaire
Partager sur d’autres sites

Ca sert à lancer du code au démarrage. Je crois que cela peut aussi servir à faire des lancements programmés.

On peut lancer des .sh, des .scpt ...

Pour ce dernier d'ailleurs, j'ai l'impression qu'il faut utiliser osascript, sinon ça ne marche pas.

Un exemple que j'ai testé :

<?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>MonAppleScript</string>
<key>ProgramArguments</key>
<array>
	<string>osascript</string>
	<string>/Users/Allegro/Library/LaunchAgents/monAppleScript.scpt</string>
</array>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>

Lien vers le commentaire
Partager sur d’autres sites

Je le définirais un peu comme ça :

Launchd c'est un daemon qui régi lancements et messages entre services en fonctions de divers paramètres.

Par exemple, avec un .plist on peux créer un agent/service de messagerie et le faire intéragir avec le système suivant divers évènements (se lancer quand le réseau est opérationel, lui envoyer un message si il y'a perte du réseau et en profiter pour qu'il puisse faire tourner les logs, etc.).

Autre exemple, quand tu branches une clef USB (pour le coup ça sera pas lui mais ça aurait pu) et bien il pourait s'occuper de monter le volume en recevant un message d'un agent qui surveille /dev, etc.

En deux mot : C'est une sorte de xinetd/inetd modifié pour coller au principes de fonctionnement Apple.

Lien vers le commentaire
Partager sur d’autres sites

  • 4 semaines après...

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...