Comment activer ou désactiver les services?

754

J'ai lu comment activer et désactiver les services dans Ubuntu et il semble y avoir 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 vise le dossier /etc/init.d et son contenu.

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

Quelle est la méthode recommandée pour activer / désactiver / ajouter des services et pourquoi?

Pourriez-vous s'il vous plaît donner un bref exemple étape par étape sur comment ajouter un service dans Ubuntu et l'activer et le désactiver?

    
posée NES 29.12.2010 - 22:03
la source

7 réponses

746

Certains services peuvent être activés / désactivés à l'aide de l'interface graphique (comme l'application startup ) ou du terminal.

Pour le terminal, vous avez plusieurs options. Tout d'abord, ouvrez un terminal (tapez "terminal" dans le tiret, par exemple, et ouvrez-le). Alors:

Services d’activation / désactivation temporaires

Pour arrêter et démarrer les services de manière temporaire (ne les active / désactive pas pour les futures démarrages), vous pouvez taper service SERVICE_NAME . Par exemple:

  • sudo service apache2 stop ( ARRÊTEZ le service Apache jusqu’à ce que vous redémarriez ou que vous le redémarriez).

  • sudo service apache2 start ( DÉMARREZ 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 / désactivé).

  • sudo service apache2 restart (le RESTART sera-t-il le service? Il est généralement utilisé lorsque vous avez modifié un fichier de configuration. Dans ce cas, si vous avez modifié une configuration PHP ou Apache redémarrer vous évitera de devoir arrêter / démarrer avec 2 lignes de commandes)

  • 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 ferait que mentionner qu'il manque un paramètre. Pour les autres services tels que le service réseau, il faudrait mentionner la petite liste de toutes les options disponibles.

SYSTEMD

À partir d’Ubuntu 15.04, Upstart sera déconseillé en faveur de Systemd. Avec Systemd pour gérer les services, nous pouvons faire ce qui suit:

systemctl start SERVICE - Utilisez-le pour démarrer un service. Ne persiste pas après le redémarrage

systemctl stop SERVICE - Utilisez-le pour arrêter un service. Ne persiste pas après le redémarrage

systemctl restart SERVICE - Utilisez-le pour redémarrer un service

systemctl reload SERVICE - Si le service le prend en charge, il rechargera les fichiers de configuration associés sans interrompre les processus utilisant le service.

systemctl status SERVICE - Affiche le statut d'un service. Indique si un service est en cours d'exécution.

systemctl enable SERVICE - Active le service, lors du prochain redémarrage ou lors du prochain événement de démarrage. Il persiste après le redémarrage.

systemctl disable SERVICE - Désactive le service au prochain redémarrage ou au prochain événement d'arrêt. Il persiste après le redémarrage.

systemctl is-enabled SERVICE - Vérifie si un service est actuellement configuré pour démarrer ou non au prochain redémarrage.

systemctl is-active SERVICE - Vérifiez si un service est actuellement actif.

systemctl show SERVICE - Affiche toutes les informations sur le service.

sudo systemctl mask SERVICE - Désactivez 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 à /dev/null et restaure la possibilité d'activer ou de démarrer manuellement le service.

UPSTART (obsolète depuis 15.04)

Si nous voulons utiliser la méthode Upstart officielle (notez que, pour l’instant, 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 & amp; restart . Il nous indiquera également si un service n’a pas encore été converti en upstart:

Un service converti afficherait généralement l’état actuel (Démarrage, Exécution, Arrêt ...) et l’ID de processus. Un service non converti donnerait une erreur sur un travail inconnu .

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

  • START - sudo start mysql

  • STOP - sudo stop mysql

  • REDÉMARRER - sudo restart mysql

  • ÉTAT - sudo status smbd

Activer / Désactiver un service

Pour faire en sorte qu'un service ne démarre ou ne s'arrête pas de manière permanente, vous devez:

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

où la strophe manual arrête Upstart de charger automatiquement le service au prochain démarrage. Tout service avec la terminaison .override aura priorité sur le fichier de service d'origine. Vous ne pourrez ensuite démarrer le service que manuellement. Si vous ne le souhaitez 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 souhaitez pas, vous pouvez ensuite faire simplement

sudo rm /etc/init/mysql.override

et Redémarrez pour que le service redémarre automatiquement. Bien sûr, pour activer un service, la manière la plus courante consiste à l'installer. Si vous installez Apache, Nginx, MySQL ou d'autres, ils démarrent automatiquement à la fin de l'installation et démarrent à chaque démarrage de l'ordinateur. La désactivation, comme mentionné ci-dessus, utilisera le service manual .

    
réponse donnée Luis Alvarado 29.12.2010 - 22:26
la source
332

Actuellement, les logiciels peuvent être lancés de trois manières différentes 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 programme lancé et exécuté directement par l'utilisateur.

SysV

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

Cette commande utilise une logique un 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 supprimés avec un nom de fichier tel que K##xxxx et démarré avec les noms de fichiers S##xxxx . Le ## in S##xxxx signifie un "ordre de démarrage" pour le service xxxx . À l'inverse, ## in K##xxxx signifie l'ordre de destruction 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, une chose après l'autre, rendant les temps de démarrage du système vraiment lents . Des tentatives ont été faites pour mettre cela en parallèle, mais ils étaient aléatoires et difficiles à exploiter. C'était la raison principale pour laquelle Upstart a été créé.

Upstart

Upstart utilise les fichiers de définition de travail dans /etc/init pour définir les événements pour lesquels un service doit être démarré. Ainsi, lors du démarrage du système, 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 pendant l'exécution d'un autre service lié au processeur ou pendant que le réseau attend qu'une adresse IP dynamique soit attribuée.

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

Laissez-moi simplement 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 au démarrage. En travaillant sur l’équipe serveur de Canonical ces derniers mois, j’ai travaillé sur un certain nombre de fichiers de travaux convertis, et le plus beau est que cela permet de se débarrasser de tous les scripts "magiques" Quelques commandes ici et là pour définir exactement comment démarrer le service, et rien de plus. Mais pour l'instant, seule une poignée de services réseau traditionnels, tels que squid et samba , ont été convertis.

Un service basé sur un démarrage?

Pour déterminer si un service est basé sur les mises à jour, vous pouvez exécuter la commande status:

status servicename

S'il s'agit d'un travail upstart , il affichera ceci:

$ status statd
statd start/running, process 942

Mais si ce n’est pas le cas, vous verrez quelque chose de plus comme ceci:

$ status apache2
status: Unknown job: apache2

Dans ce cas, apache2 n'a pas été converti en upstart . Donc, pour désactiver apache2 , vous venez de lancer

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

Désactiver les services (jobs) en démarrage

Les définitions de travail de démarrage n’ont pas de commande update-rc.d . Pour désactiver le travail, vous devez modifier le fichier de travail directement pour le désactiver. Il y a deux façons de le faire.

Si vous souhaitez toujours pouvoir le démarrer manuellement, vous devez commenter la condition start on . Supposons que vous souhaitiez installer samba , mais ne le faites pas démarrer automatiquement. Voici le fichier de travail (en natty):

description "SMB/CIFS File Server"
author      "Steve Langasek <[email protected]>"

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 même s'il ne redémarre pas au démarrage, vous devez toujours l'arrêter cette fois avec

sudo service smbd stop

Si toutefois vous ne voulez jamais que samba démarre, je vous suggère de supprimer le paquet. Si, toutefois, vous souhaitez qu’il soit installé, mais ne peut pas être démarré, vous pouvez également le faire:

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

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

À partir de la version de démarrage proposée au 11.04, il existe un nouveau mot-clé qui désactive les strophes start on et stop on : manual . Donc, une autre façon de désactiver le service à partir de 11.04 est de faire:

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

# command from root shell
echo manual >> /etc/init/mysql.override

Vous pouvez créer un fichier override pour désactiver un service sans modifier la définition du travail, en insérant simplement le mot clé manual .

    
réponse donnée SpamapS 06.01.2011 - 19:25
la source
120

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

Qui fera apparaître une fenêtre interactive comme celle-ci

Vous pouvez naviguer dans 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 les services en sélectionnant SPACE sur les niveaux d’exécution souhaités.

Jobs-Admin

Une autre alternative serait Jobs-Admin en installant via

sudo apt-get install jobs-admin

Qui fournit également une interface graphique comme celle-ci

Pour afficher plus de travaux, vous devez cocher Afficher les travaux protégés dans son menu.

chkconfig

Et la troisième option serait chkconfig ,

sudo apt-get install chkconfig

Il peut être utilisé via CLI chkconfig , affichant la liste des travaux On / Off. Nous pouvons également afficher les services système en utilisant chkconfig –list

Les services peuvent être activés avec

chkconfig <service> on

Les services peuvent être désactivés avec

chkconfig <service> off

Et nous pouvons même ajouter notre propre service, en utilisant un script d'initialisation approprié avec des en-têtes appropriés.

chkconfig --add <service>

update-rc.d

Une autre option peut être référencée here update-rc.d expliqué brièvement ici .

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

    
réponse donnée atenz 28.06.2012 - 20:00
la source
48

Pour ceux d’entre nous qui exécutent Ubuntu sur ssh, je pense que la plus belle option est rcconf - un programme basé sur du texte:

sudo apt-get install rcconf
sudo rcconf

Naviguez avec les touches de tabulation et les flèches, appuyez sur la barre d’espace pour activer / désactiver. Les modifications sont persistantes au redémarrage.

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 niveau d'exécution. (Pour ceux qui s’intéressent suffisamment aux niveaux d’exécution pour souhaiter les changer :)

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

Heureusement, la plupart des services pertinents lors de la connexion à un serveur (Apache, Tomcat, mdadm, boinc-client ...) n’ont pas encore été déplacés.

    
réponse donnée j-g-faustus 06.01.2011 - 19:44
la source
18

J'ai découvert qu'il y avait cet outil graphique, quelque chose comme BUM mais compatible avec Upstart:

  • Emplois-Admin

    sudo apt-get install jobs-admin
    
réponse donnée Postadelmaga 21.05.2012 - 12:27
la source
12

Modifier le fichier de configuration existant (comme décrit ci-dessus) n’est pas une bonne idée. Un package mis à jour pourrait fournir une configuration mise à jour, et vous deviez répéter vos modifications encore et encore.

En regardant man 5 init on trouvera une solution plus appropriée: utiliser une configuration de substitution. Exemple court: Supposons que nous avons un service appelé "foobar", il y aurait donc un fichier appelé /etc/init/foobar.conf avec sa configuration de démarrage. Maintenant, vous ne voulez pas supprimer ce fichier, ni le modifier, mais vous ne voulez pas non plus que ce service soit exécuté? Placez donc un fichier override à côté: /etc/init/foobar.override , contenant (éventuellement l'en-tête avec la description et) au lieu de cela les lignes start on / stop on vous placez une ligne avec un mot: manual De cette façon, vous indiquez à upstart d’utiliser essentiellement le foobar.conf , mais remplacez la définition du démarrage pour ne démarrer que ce service lorsqu’il est appliqué manuellement (via service foobar start dans notre exemple).

    
réponse donnée Izzy 30.06.2012 - 22:27
la source
7

Il existe également le gestionnaire d’amorçage .

Pour installer: sudo apt-get install bum

Plus d’informations: lien

    
réponse donnée Sadi 20.05.2014 - 16:47
la source

Lire d'autres questions sur les étiquettes