Les applications qui se lancent "toutes seules" - Résumé

bompi

El Moderador
Modérateur
Club iGen
12 Février 2004
42 023
3 209
Bonjour à tous

Aujourd'hui, ayant enfin réussi à me débarrasser d'une application importune qui se lançait automatiquement, je m'suis dit que je pourrais faire un petit résumé de la situation, sur Tiger, du moins. Vu le nombre de fils sur cette question, celui-ci sera peut-être utile.

Bien évidemment, les applications qui "se lancent toutes seules" sont lancées par quelque chose ... mais il reste à savoir ce qu'est ce quelque chose. D'où ce petit recensement. Pour ceux qui veulent aller à l'essentiel, passer au III.

I. Mini-description

I.a) les services [niveau système / niveau global / niveau user]

Les services (souvent des daemons) sont en général lancés par le système au démarrage d'icelui, ou non lancés si telle est la configuration.

Ils permettent au système de fournir des fonctionnalités à ses utilisateurs telles que : réseau, web, ftp, bases de données, gestion de périphériques etc.

Ces services peuvent être installés par Apple ou par un tiers. Par exemple lorsqu'on installe une base de données, on installe un service.

Apple propose pour gérer les services plusieurs techniques différentes : celle de SystemStarter et celle de launchd (pas besoin de parler davantage du vieux rc).
  • SystemStarter n'est officiellement plus le lanceur officiel depuis Tiger mais il est toujours présent dans le système et est encore largement utilisé tant par Apple que par d'autres.
  • launchd est normalement l'outil à utiliser, en dépit de quelques limitations dommageables (pas de gestion de hiérarchie ou d'interdépendence entre les services)
Cas particuliers : Certains services ont un mode d'activation tout différent : un certain nombre de services Internet (tels que POP3, IMAP ou TELNET) sont activés par le truchement d'un daemon dédié, xinetd.

I.b) les applications

En général les applications lancées automatiquement le sont lors du login. Éventuellement, elles peuvent être lancées par un service lorsqu'il est sollicité mais c'est suffisamment moche pour ne pas le voir souvent.

II. Où les chercher ?

II.a) Services

II.a.1) SystemStarter

Les services gérés par SystemStarter se trouvent dans les dossiers suivants :
/Library/StartupItems
/System/Library/StartupItems

Pour un certain nombre d'entre eux, le lancement de ces services est
déterminé par une entrée dans le fichier /etc/hostconfig.

II.a.2) launchd


Les services gérés par launchd se trouvent dans les répertoires suivants :
/Library/LaunchDaemons/
/Library/LaunchAgents/
/System/Library/LaunchDaemons/
/System/Library/LaunchAgents/
~/Library/LaunchDaemons/
~/Library/LaunchAgents/


Ils sont rangés suivant les critères suivants :
  • Les services définis dans /Library et /System/Library sont généraux : ils concernent l'ensemble du système.
  • Ceux définis dans /System/Library sont ceux fournis avec Mac OS X et il convient de n'y rien ajouter.
  • Ceux définis dans ~/Library le sont pour le compte utilisateur concerné.
Pour les services systèmes, la différence entre LaunchAgents et LaunchDaemons est que les services du second sont lancés même si aucune session n'est ouverte alors que les services du premier sont lancés dès qu'un utilisateur se connecte.

Si l'on veut qu'un service soit actif uniquement lorsque l'utilisateur Renart se logge, il faut le définir dans ~Renart/library/LaunchDaemons.

NB : à cette heure, je ne vois pas l'intérêt de ~/Library/LaunchAgents

II.b) Applications

Les applications qui se lancent à l'ouverture de session sont définies dans le panneau de préférence, rubrique Comptes, onglet Login Items (je ne connais pas le libellé français). On les retrouve définies dans le fichier de préférences ~/Library/Preferences/loginwindow.plist.

Mais ... attention ! On peut aussi en définir dans
/Library/Preferences/loginwindow.plist. Elles se lanceront alors pour tout utilisateur qui se logge. En mode graphique je ne sais pas où on les manipule.

III. Manip's
Note liminaire : il va de soi, mais je le répète, que toute manipulation doit être précédée de la sauvegarde qui convient (du système, du dossier, des fichiers, de ce que l'on voudra, mais surtout de ce qu'il faudra !!!)
III.a) Services

III.a.1) SystemStarter

Pour activer/désactiver un tel service, consulter le fichier /etc/hostconfig.

Par exemple : pour activer Apple Remote Desktop, on ajoute (ou modifie) dans le fichier /etc/hostconfig la ligne
Bloc de code:
ARDAGENT=-YES-
Au prochain démarrage, le service, défini dans /System/Library/StartupItems/RemoteDesktopAgent démarrera.

Pour n'agir que temporairement, on peut utiliser la commande (Terminal ;))
SystemStarter directement. Pour activer Apple Remote Desktop, cela
donnerait :
Bloc de code:
sudo SystemStarter start RemoteDesktopAgent
Dans ce cas précis, cela s'active aussi via le panneau des Préférences,
onglet "Partage".

III.a.2) launchd

Pour activer/désactiver, arrêter/lancer un service, il faut utiliser la commande launchctl. Cela se manipule avec précaution.

Un exemple : gestion du daemon de messagerie Postfix.
  • pour l'arrêter :
    Bloc de code:
    sudo launchctl stop org.postfix.master
  • pour le lancer :
    Bloc de code:
    sudo launchctl start org.postfix.master
  • pour le désactiver :
    Bloc de code:
    sudo launchctl unload -w /System/Library/LaunchDaemons/org.postfix.master.plist
  • pour l'activer :
    Bloc de code:
    sudo launchctl load -w /System/Library/LaunchDaemons/org.postfix.master.plist
Remarquez que les deux dernières commandes respectivement arrêtent/relancent le service du même coup.

Pour plus de renseignement, voir le manuel de la commande.

III.b) Applications

Pour la grande majorité des cas, ces applications peuvent être enlevées/ajoutées directement depuis le panneau des préférences, comme indiqué ci-dessus.

Mais pour celles définies dans /Library/Preferences/loginwindow.plist, il faut utiliser l'éditeur de fichier de préférence livré avec les outils de développement. Ou, si on ne les a pas installés, utiliser les outils du Terminal. En effet, les fichiers de préférences ne sont par défaut plus dans un format éditable. Aussi faut-il les convertir au format texte avant que de les tripoter.

Pour transformer un fichier de préférences au format texte (XML), par exemple celui de GeekTool :
Bloc de code:
plutil -convert xml1 org.tynsoe.geektool.plist
Pour le remettre au format binaire (pas nécessaire) :
Bloc de code:
plutil -convert binary1 org.tynsoe.geektool.plist
Dans le cas qui nous occupe, le fichier /Library/Preferences/loginwindow.plist, les entrées sont encadrées de
Bloc de code:
<dict>
...
</dict>
et il faut donc ôter l'entrée que l'on veut en supprimant bien les balises et ce qui se trouve entre elles.
Après s'être déloggé puis reloggé, l'application ne devrait alors plus être lancée.

Voili. Encore une fois : soyez prudents dans les manipulations.

B.
 
Super !!! On pourrait rendre le fil important&#8230; Tu t'en charges&#8230; ;)
 
  • J’aime
Réactions: bauer