Dans Windows, j'ai le gestionnaire de services, où je vois tous les services système, qui peuvent être démarrés via Windows lui-même, je configure l'utilisateur qu'il utilise, la gestion des droits est là, et je peux transmettre des variables et d'autres informations aux services , je peux les nommer, et je peux créer des services en double d'un programme et ainsi de suite. J'ai donc un outil de gestion principal sous Windows.
Comment puis-je faire la même chose sous Linux? Comment puis-je déclencher l'exécution de "svnserve" au démarrage, ou comment puis-je configurer des services pour qu'ils s'exécutent dans un contexte particulier. Comment visualiser tous les services "programmés" ?
Réponse acceptée :
Il existe actuellement 3 principaux systèmes d'initialisation utilisés par Linux. Il y a quelques années, il n'y en avait qu'un, SysVinit. Mais SysVinit manquait sérieusement de fonctionnalités telles que la représentation graphique des dépendances de service, il est donc désormais obsolète dans la plupart des distributions. Actuellement, la plupart des distributions passent à systemd. Bien qu'il y ait aussi un parvenu.
Mais voici la réponse à votre question pour chacun des 3 systèmes d'initialisation :
SysVinit
SysVinit actuellement utilisé par Debian et RedHat. Bien que la prochaine version de RedHat (7) utilisera systemd.
La manière universelle d'activer les services SysVinit au démarrage est de les lier symboliquement dans /etc/rc3.d
(ou /etc/rc2.d
). Tous les services peuvent être trouvés dans /etc/init.d
. Notez cependant que les distributions auront souvent leur propre outil pour gérer ces fichiers, et cet outil doit être utilisé à la place. (Fedora/RedHat a service
et chkconfig
, Ubuntu a update-rc.d
)
Répertorier les services :
ls /etc/init.d/
Démarrer le service :
/etc/init.d/{SERVICENAME} start
ou
service {SERVICENAME} start
Arrêter le service :
/etc/init.d/{SERVICENAME} stop
ou
service {SERVICENAME} stop
Activer le service :
cd /etc/rc3.d
ln -s ../init.d/{SERVICENAME} S95{SERVICENAME}
(le S95
est utilisé pour spécifier la commande. S01 commencera avant S02, etc)
Désactiver le service :
rm /etc/rc3.d/*{SERVICENAME}
Système
La distribution la plus notable utilisant systemd est Fedora. Bien qu'il soit utilisé par beaucoup d'autres. De plus, comme Debian a choisi d'utiliser systemd plutôt qu'upstart, il deviendra de facto le système upstart pour la plupart des distributions (ubuntu a déjà annoncé qu'il abandonne upstart pour systemd).
Répertorier les services :
systemctl list-unit-files
Démarrer le service :
systemctl start {SERVICENAME}
Arrêter le service :
systemctl stop {SERVICENAME}
Activer le service :
systemctl enable {SERVICENAME}
Désactiver le service :
systemctl disable {SERVICENAME}
Parfait
Upstart a été développé par les gens d'Ubuntu. Mais après que Debian ait décidé d'utiliser systemd, Ubuntu a annoncé qu'il abandonnerait le démarrage.
Upstart a également été brièvement utilisé par RedHat, car il est présent dans RHEL-6, mais il n'est pas couramment utilisé.
En relation:Comment la date de coreutil parvient-elle à obtenir des résultats aussi étranges?Répertorier les services :
initctl list
Démarrer le service :
initctl start {SERVICENAME}
Arrêter le service :
initctl stop {SERVICENAME}
Activer le service :
2 façons malheureusement :
-
Il y aura un fichier
/etc/default/{SERVICENAME}
qui contient une ligneENABLED=...
. Remplacez cette ligne parENABLED=1
. -
Il y aura un fichier
/etc/init/{SERVICENAME}.override
. Assurez-vous qu'il contientstart
(ou est entièrement absent), pasmanual
.
Désactiver le service :
echo manual > /etc/init/{SERVICENAME}.override
Remarque :Il existe également le système d'initialisation "OpenRC" qui est utilisé par Gentoo. Actuellement, Gentoo est la seule distribution qui l'utilise, et son utilisation n'est pas envisagée, ni prise en charge par une autre distribution. Donc, je ne couvre pas son utilisation (bien que si l'opinion est que je le fais, je peux l'ajouter).