902 votes

Comment activer ou désactiver les services ?

J'ai lu comment activer et désactiver les services dans Ubuntu et il semble qu'il existe différentes possibilités pour les gérer.

La première méthode que j'ai trouvée est update-rc.d pour ajouter de nouveaux services au démarrage, qui se concentre sur le dossier /etc/init.d et son contenu.

L'autre méthode que j'ai trouvée est d'éditer les fichiers .conf dans le dossier /etc/init.

Quelle est la façon recommandée d'activer / désactiver / ajouter des services et pourquoi?

Pourriez-vous s'il vous plaît donner un exemple étape par étape infaillible sur la façon d'ajouter un service dans Ubuntu et l'activer et le désactiver?

1 votes

Pour la mise en réseau, veuillez consulter : askubuntu.com/questions/230698/…

0 votes

Ceci serait utile pour ceux bloqués sur Fedora 12 et qui ont atterri ici. Au cas où le lien ne fonctionne plus, chkconfig est ce que vous cherchez.

3 votes

Veuillez noter que la réponse pour Ubuntu 14.04 est toujours manquante ici.

944voto

Bob Points 940

Il existe des services qui peuvent être activés/désactivés à l'aide de l'interface graphique (comme l'application démarrage) ou du terminal.

Pour le Terminal, vous avez plusieurs options. Tout d'abord, ouvrez un terminal (Tapez "terminal" dans le dash, par exemple, et ouvrez-le). Ensuite :

Activation/désactivation temporaire des services

Pour arrêter et démarrer des services temporairement (ceci n'active / désactive pas les services pour les démarrages futurs), vous pouvez taper service NOM_DU_SERVICE [action]. Par exemple :

  • sudo service apache2 stop : Va ARRÊTER le service Apache jusqu'au prochain redémarrage ou jusqu'à ce que vous le redémarriez.
  • sudo service apache2 start : Va DÉMARRER le service Apache en supposant qu'il ait été arrêté auparavant.
  • service apache2 status : Vous indiquera l'ÉTAT du service, s'il est activé/en cours d'exécution ou désactivé/NE fonctionne pas.
  • sudo service apache2 restart : Va REDÉMARRER le service. C'est plus couramment utilisé lorsque vous avez modifié un fichier de configuration. Dans ce cas, si vous avez modifié une configuration PHP ou une configuration Apache. Redémarrer vous évitera d'avoir à arrêter/démarrer avec 2 lignes de commande
  • service apache2 : Dans ce cas, puisque vous n'avez pas mentionné l'ACTION à exécuter pour le service, il vous montrera toutes les options disponibles pour ce service spécifique. Cet aspect varie en fonction du service, par exemple, avec MySQL, il ne mentionnerait que le manque d'un paramètre. Pour d'autres services comme le service de réseau, il mentionnerait la petite liste de toutes les options disponibles.

Systemd

À partir d'Ubuntu 15.04, Upstart sera déconseillé au profit de Systemd. Avec Systemd pour gérer les services, nous pouvons faire ce qui suit (à travers le schéma systemctl action SERVICE) :

  • sudo systemctl start SERVICE : Utilisez-le pour démarrer un service. Ne persiste pas après le redémarrage
  • sudo systemctl stop SERVICE : Utilisez-le pour arrêter un service. Ne persiste pas après le redémarrage
  • sudo systemctl restart SERVICE : Utilisez-le pour redémarrer un service
  • sudo systemctl reload SERVICE : Si le service le supporte, cela rechargera les fichiers de configuration qui lui sont liés sans interrompre aucun processus utilisant le service.
  • systemctl status SERVICE : Montre l'état d'un service. Indique si un service est actuellement en cours d'exécution.
  • sudo systemctl enable SERVICE : Active le service, au prochain redémarrage ou au prochain événement de démarrage. Persiste après le redémarrage.
  • sudo systemctl disable SERVICE : Désactive le service au prochain redémarrage ou au prochain événement d'arrêt. Persiste après le redémarrage.
  • systemctl is-enabled SERVICE : Vérifier si un service est actuellement configuré pour démarrer ou non au prochain redémarrage.
  • systemctl is-active SERVICE : Vérifier si un service est actuellement actif.
  • systemctl show SERVICE : Afficher toutes les informations sur le service.
  • sudo systemctl mask SERVICE : Désactive complètement un service en le liant à /dev/null; vous ne pouvez pas démarrer le service manuellement ou activer le service.
  • sudo systemctl unmask SERVICE : Supprime le lien vers /dev/null et restaure la capacité d'activer et de démarrer manuellement le service.

Upstart (Déconseillé depuis 15.04)

Si nous voulons utiliser la méthode officielle Upstart (Notez que, pour le moment, tous les services n'ont pas été convertis en Upstart), nous pourrions utiliser les commandes suivantes :

status SERVICE - Cela nous indiquera si un service converti est en cours d'exécution ou non. Notez que ceci est déconseillé au profit de start, stop, status & restart. Cela nous indiquera également si un service n'a pas encore été converti en upstart :

Un service converti donnerait généralement l'état actuel (Démarrage, En cours d'exécution, Arrêt...) et l'identifiant du processus. Un service non converti donnerait une erreur concernant un travail inconnu.

Certains raccourcis peuvent fonctionner uniquement avec la commande service ci-dessus mais pas avec les commandes ci-dessous à moins qu'ils ne soient à 100% convertis en services upstart :

  • sudo start mysql : Démarrer
  • sudo stop mysql : Arrêter
  • sudo restart mysql : Redémarrer
  • sudo status smbd : État

Activation / Désactivation d'un service

Pour basculer un service de démarrage ou d'arrêt de manière permanente, vous devriez faire :

echo manual | sudo tee /etc/init/SERVICE.override

où le terme manual empêchera Upstart de charger automatiquement le service au prochain démarrage. Tout service avec l'extension .override aura priorité sur le fichier de service d'origine. Vous ne pourrez démarrer le service manuellement qu'ensuite. Si vous ne le voulez pas, supprimez simplement le .override. Par exemple :

echo manual | sudo tee /etc/init/mysql.override

Mettra le service MySQL en mode manual. Si vous ne le voulez pas, ensuite vous pouvez simplement faire

sudo rm /etc/init/mysql.override

et redémarrez pour que le service démarre de nouveau automatiquement. Bien sûr, pour activer un service, la manière la plus commune est en l'installant. Si vous installez Apache, Nginx, MySQL ou d'autres, ils se lanceront automatiquement une fois l'installation terminée et se démarreront à chaque démarrage de l'ordinateur. Désactiver, comme mentionné ci-dessus, fera usage du service manual.

0 votes

Avez-vous besoin d'ajouter .service à chaque commande? systemctl mongod status a très bien fonctionné.

0 votes

@DanDascalescu non vous ne le faites pas mais laissez-moi clarifier cela.

4 votes

Le fichier .override doit-il être placé dans /etc/init.d/, c'est-à-dire là où le service est placé?

368voto

Jeremy Ruten Points 59989

Actuellement, il existe en fait trois façons différentes pour les logiciels d'être démarrés en tant que service dans Ubuntu, SysV, Upstart et systemd. Un service est défini ici comme un programme exécuté par le système en arrière-plan, par opposition à un démarré et exécuté directement par l'utilisateur.

SysV

La manière traditionnelle de démarrer des services sous Linux était de placer un script dans /etc/init.d, puis d'utiliser la commande update-rc.d (ou dans les distributions basées sur RedHat, chkconfig) pour l'activer ou le désactiver.

Cette commande utilise une logique quelque peu compliquée pour créer des liens symboliques dans /etc/rc#.d, qui contrôlent l'ordre de démarrage des services. Si vous exécutez ls /etc/rc2.d, vous pouvez voir l'ordre dans lequel les services seront arrêtés avec un nom de fichier comme K##xxxx et démarrés avec des noms de fichiers S##xxxx. Le ## dans S##xxxx signifie un "ordre de démarrage" pour le service xxxx. En revanche, le ## dans K##xxxx signifie l'ordre d'arrêt pour le service xxxx.

Un problème majeur avec SysV était que lors du démarrage du système, tout devait être fait en série, un après l'autre, ce qui rendait les temps de démarrage du système vraiment lents. Des tentatives ont été faites pour paralléliser cela, mais elles étaient maladroites et difficiles à exploiter pleinement. C'était la principale raison pour laquelle Upstart a été créé.

Upstart

Upstart utilise des fichiers de définition de tâches dans /etc/init pour définir sur quels événements un service doit être démarré. Ainsi, pendant que le système démarre, upstart traite divers événements, puis peut démarrer plusieurs services en parallèle. Cela leur permet d'utiliser pleinement les ressources du système, par exemple, en démarrant un service lié au disque alors qu'un autre service lié au processeur s'exécute, ou pendant que le réseau attend qu'une adresse IP dynamique soit attribuée.

Vous pouvez voir tous les fichiers de tâches upstart en exécutant ls /etc/init/*.conf

Laissez-moi juste m'arrêter ici et dire que si vous ne savez pas ce qu'est un service, ou ce qu'il fait, NE LE désactivez PAS !

Tous les services n'ont pas été convertis en upstart. Tout en travaillant dans l'équipe serveur chez Canonical ces derniers mois, j'ai travaillé sur un certain nombre de fichiers de tâches convertis, et la meilleure partie est qu'elle permet de se débarrasser de toute la "magie" du script et de simplement insérer quelques commandes ici et là pour définir exactement comment démarrer le service, et rien de plus. Mais pour l'instant, seuls quelques services réseau traditionnels, comme squid et samba, ont été convertis.

Un service est-il basé sur upstart ?

Pour savoir si un service est basé sur upstart, vous pouvez exécuter la commande statut :

status nomduservice

S'il s'agit d'une tâche upstart, cela affichera ceci :

$ status statd
statd start/running, processus 942

Mais s'il ne l'est pas, vous verrez quelque chose de plus comme ceci :

$ status apache2
statut : Unknown job: apache2

Dans ce cas, apache2 n'a pas été converti en upstart. Donc, pour désactiver apache2, vous exécutez simplement

sudo update-rc.d apache2 disable
sudo service apache2 stop

Désactiver les services (tâches) en upstart

Les définitions de tâches upstart n'ont pas de commande update-rc.d. Pour désactiver la tâche, vous devez éditer directement le fichier de tâche pour la désactiver. Il y a deux façons de le faire.

Si vous voulez toujours pouvoir le démarrer manuellement, alors vous devez mettre en commentaire la condition start on. Disons que vous voulez installer samba, mais ne pas le démarrer automatiquement. Voici le fichier de tâche (dans natty) :

description "Serveur de fichiers SMB/CIFS"
auteur "Steve Langasek "

start on local-filesystems
stop on runlevel [!2345]

respawn

pre-start script
    RUN_MODE="daemons"

    [ -r /etc/default/samba ] && . /etc/default/samba

    [ "$RUN_MODE" = inetd ] && { stop; exit 0; }

    install -o root -g root -m 755 -d /var/run/samba
end script

exec smbd -F

Pour désactiver samba, vous pouvez simplement mettre un # devant le "start on local-filesystems". Notez que bien qu'il ne redémarre pas au démarrage, vous devez toujours l'arrêter cette fois avec

sudo service smbd stop

Cependant, si vous ne voulez jamais que samba démarre, je vous suggère en fait de supprimer le package. En revanche, si vous voulez l'installer, mais qu'il ne soit pas démarrable, vous pouvez également faire :

mv /etc/init/smbd.conf /etc/init/smbd.conf.disabled

Désactiver un service en utilisant la clause start/stop (à partir de la version 11.04)

À partir de la version d'upstart qui sera dans le 11.04, il y a un nouveau mot-clé qui désactive les clauses start on et stop on : manual. Donc une autre façon de désactiver le service à partir du 11.04 est de faire :

echo 'manual' | sudo tee /etc/init/mysql.override

# commande à partir du shell root
echo manual >> /etc/init/mysql.override

Vous pouvez créer un fichier override pour désactiver un service sans éditer du tout la définition de la tâche, en y mettant simplement le mot-clé manual.

0 votes

Super, merci. J'ai enfin réussi à arrêter quelques "services mystères", et suffisamment pour que je puisse commencer à expérimenter avec des services de mon propre chef.

20 votes

On dirait que le 11.04 a également un système de remplacement. Ainsi, echo manual >> /etc/init/.override est préférable car il laisse le fichier .conf original intact. Quoi qu'il en soit, c'est quand même dommage qu'une fonctionnalité aussi basique d'activation/désactivation ait pris 3 ans pour être développée, et qu'il n'y ait pas d'interface graphique pour cela.

3 votes

update-rc.d est ce qui importe vraiment

132voto

atenz Points 12194

Sysv-rc-conf

Essayez d'utiliser sysv-rc-conf

sudo apt-get install sysv-rc-conf

et pour commencer à gérer les services, exécutez

sudo sysv-rc-conf

Cela ouvrira une fenêtre interactive comme ceci

description de l'image

Vous pouvez naviguer à travers les pages en utilisant Ctrl+n pour la page suivante et Ctrl+p pour la page précédente. Vous pouvez activer et désactiver des services en sélectionnant ESPACE sur les niveaux d'exécution désirés.

Jobs-Admin

Une autre option serait Jobs-Admin en l'installant via

sudo apt-get install jobs-admin

Qui fournit également une interface graphique comme ceci

aperçu de Jobs-Admin

Pour afficher plus de tâches, vous devez cocher la case Afficher les tâches protégées dans son menu.

chkconfig

Et la troisième option serait chkconfig,

sudo apt-get install chkconfig

Il peut être utilisé via la ligne de commande avec chkconfig, montrant la liste des tâches activées / désactivées. Nous pouvons également afficher les services système en utilisant chkconfig –list

Les services peuvent être activés en utilisant

chkconfig  on

Les services peuvent être désactivés en utilisant

chkconfig  off

Et nous pouvons même ajouter notre propre service, en utilisant un script init approprié avec des en-têtes corrects.

chkconfig --add 

update-rc.d

Et une autre option peut être consultée ici update-rc.d , expliqué brièvement ici.

Notez que pour Ubuntu Server 12.04, update-rc.d est utilisé à la place de chkconfig.

1 votes

Sur le serveur Ubuntu : Le paquet chkconfig n'est pas disponible, mais est mentionné par un autre paquet.

0 votes

@piraté Vous êtes libre de modifier et de publier les informations mises à jour concernant l'édition du serveur. Merci.

0 votes

J'ai fait comme vous l'avez suggéré, maintenant c'est en attente de révision par les pairs.

50voto

Daniel Moore Points 193

Pour ceux d'entre nous qui utilisent Ubuntu en ssh, je pense que l'option la plus agréable est rcconf - un programme basé sur du texte :

sudo apt-get install rcconf
sudo rcconf

texte alternatif

Naviguez avec les touches Tab et de direction, appuyez sur la barre d'espace pour activer/désactiver. Les modifications sont persistantes après les redémarrages.

Capture d'écran empruntée à cet article de blog, qui montre également sysv-rc-conf - un outil similaire qui vous permet également de définir le runlevel. (Pour ceux qui se soucient suffisamment des runlevels pour vouloir les changer :)

Malheureusement, rcconf ne fonctionne pas avec upstart (les services répertoriés dans /etc/init/*), seulement avec le mécanisme traditionnel (ls -l /etc/init.d/* - ceux qui ne sont pas des liens symboliques).

Heureusement, bon nombre des services pertinents lors de l'utilisation de ssh sur un serveur (Apache, Tomcat, mdadm, boinc-client...) n'ont pas encore été déplacés vers upstart.

3 votes

Malheureusement, non. Mais cela a fonctionné pour tous les cas que j'ai voulu changer - les tâches de démarrage semblent être principalement des choses que je ne veux jamais désactiver - horloge matérielle, démon de journalisation, réseau, etc. (sur un serveur Ubuntu, du moins). Mais c'est quelque chose à garder à l'esprit (je ne l'étais pas :), j'ai mis à jour la publication.

0 votes

Malheureusement, mysql a été converti en upstart. Et c'est un service que j'utilise uniquement lorsque je travaille sur un projet.

0 votes

Il y a un bug avec rcconf sur Ubuntu 12.04 qui empêche le programme de démarrer. Pour résoudre le problème, vous devez installer le paquet dialog.

19voto

Postadelmaga Points 5531

J'ai découvert que jusqu'à bionic il y a cet outil GUI, un peu comme BUM mais compatible avec Upstart : Jobs-Admin

sudo apt-get install jobs-admin

0 votes

Mais c'est trop simple, et ne permet pas de changer les "emplois protégés" (quels sont ces jobs ? Apple a Jobs, un systèmed'exploitation a des daemons !)

0 votes

Je ne permet même pas de changer les "emplois non protégés" (Ubuntu 14.04), produisant à la place un rapport de crash ;-)

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X