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 de même sous Linux? Comment puis-je déclencher pour exécuter "svnserve" au démarrage, ou comment configurer les services pour qu'ils s'exécutent dans un contexte spécial. Comment visualiser tous les services "programmés"?
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 capacité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 pstart .
Mais voici la réponse à votre question pour chacun des 3 systèmes d'initialisation:
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 consiste à 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
)
ls /etc/init.d/
/etc/init.d/{SERVICENAME} start
ou
service {SERVICENAME} start
/etc/init.d/{SERVICENAME} stop
ou
service {SERVICENAME} stop
cd /etc/rc3.d
ln -s ../init.d/{SERVICENAME} S95{SERVICENAME}
(le S95
est utilisé pour spécifier la commande. S01 démarrera avant S02, etc.)
rm /etc/rc3.d/*{SERVICENAME}
Fedora est la distribution la plus notable utilisant systemd. Bien qu'il soit utilisé par beaucoup d'autres. De plus, Debian ayant choisi d'aller avec systemd plutôt que upstart, il deviendra le système upstart par défaut pour la plupart des distributions (ubuntu a déjà annoncé qu'il abandonnerait upstart pour systemd).
systemctl list-unit-files
systemctl start {SERVICENAME}
systemctl stop {SERVICENAME}
systemctl enable {SERVICENAME}
systemctl disable {SERVICENAME}
Upstart a été développé par les gens d'Ubuntu. Mais après debian a décidé d'aller avec systemd , Ubuntu a annoncé qu'ils abandonneraient .
Upstart a également été brièvement utilisé par RedHat, car il est présent dans RHEL-6, mais il n'est pas couramment utilisé.
initctl list
initctl start {SERVICENAME}
initctl stop {SERVICENAME}
Malheureusement, 2 façons:
Il y aura un fichier /etc/default/{SERVICENAME}
qui contient une ligne ENABLED=...
. Modifiez cette ligne en ENABLED=1
.
Il y aura un fichier /etc/init/{SERVICENAME}.override
. Assurez-vous qu'il contient start
(ou qu'il est totalement absent), pas manual
.
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 il n'est pas envisagé pour une utilisation, ni pris en charge par aucune autre distribution. Je ne couvre donc pas son utilisation (bien que si l'opinion est que je le fais, je peux l'ajouter).
Différentes distributions utilisent différents mécanismes pour gérer les services. Le logiciel de gestion des services s'appelle init , après le nom traditionnel du tout premier processus (avec ID de processus 1) qui est chargé de démarrer les autres.
Debian utilise la variante traditionnelle SysVinit d'init. Sous ce système, il existe une collection de scripts dans le répertoire /etc/init
(cet emplacement et d'autres peuvent varier légèrement entre les distributions qui utilisent SysVinit). Ces scripts ne sont pas appelés directement, mais via des liens symboliques dans les répertoires /etc/rc?.d
. Ce sont la présence et le nom de ces liens symboliques qui déterminent quand les services sont démarrés. Pour plus de détails, lisez le chapitre sur init dans la référence Debian .
Jetez un œil dans /etc/rc?.d
pour voir quels services sont déjà présents. La lettre ou le chiffre avant le point est le niveau d'exécution; les entrées dont le nom commence par S
sont exécutées avec l'argument start
lors de la saisie du niveau d'exécution, et les entrées dont le nom commence par K
sont exécutées à la sortie du niveau d'exécution. La séquence de niveau d'exécution normale est: S au démarrage (donc /etc/rcS.d/S*
sont exécutés), puis 2 (donc /etc/rc2.d/S*
sont exécutés). Au moment de l'arrêt, /etc/rc2.d/K*
sont exécutés, puis le niveau d'exécution passe à 0 (ou 6 pour un redémarrage).
En bref, si vous souhaitez créer un script de démarrage pour un nouveau service:
/etc/init.d
. Ce script doit accepter un argument qui peut être start
, stop
, force-reload
, restart
, ou (facultatif) reload
ou status
. La différence entre reload
et restart
est que restart
est équivalent à stop
suivi de start
tandis que reload
recharge le configuration sans rien arrêter (si le service le prend en charge); force-reload
fait reload
si disponible et restart
sinon. Voir les fichiers existants et Faire exécuter des scripts au démarrage avec Debian pour des exemples.update-rc.d
pour créer des liens symboliques pour démarrer et arrêter votre service. La plupart des services s'exécutent dans les niveaux d'exécution 2, 3, 4 et 5.Notez que pour fournir un accès svn, il peut être plus facile de configurer Apache et d'utiliser le protocole HTTP ou HTTPS. Cela a l'avantage secondaire de permettre une navigation rapide dans le référentiel via un navigateur Web.
Dans un contexte Unix traditionnel, les services n'ont rien de spécial. Les services ne sont que des processus, mais à deux exceptions près: ils n'ont pas besoin de terminal et ils démarrent au démarrage. la façon dont ils démarrent au démarrage dépend de init (qui peut être sysv init, bsd init, upstart, systemd ou autre; vérifiez votre page de manuel pour init) et si vous utilisez un wrapper pour la tâche ou pour la configuration init. Rien ne vous empêche d'exécuter un service à partir d'un terminal, en fait, il est courant à des fins de test.