Question Comment activer ou désactiver les services?


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 d'ajouter de nouveaux services au démarrage, qui vise à /etc/init.d dossier et son contenu.

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

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 court exemple étape par étape sur la façon d'ajouter un service dans Ubuntu et l'activer et le désactiver?


761
2017-12-29 21:03


origine


Pour le réseautage, veuillez consulter: askubuntu.com/questions/230698/… - Jorge Castro
Ce serait utile pour ceux coincés sur Fedora 12 et ont atterri ici. Au cas où linkrot chkconfigest ce que vous recherchez - Bleeding Fingers
Notez que la réponse pour Ubuntu 14.04 manque toujours ici. - Reinier Post
@MarcelloNuccio: à partir d'Ubuntu 15.04, Upstart est devenu obsolète en faveur de Systemd. - Dan Dascalescu


Réponses:


Certains services peuvent être activés / désactivés à l'aide de l'interface graphique (comme le startup application) ou le 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

Arrêter et démarrer les services temporairement (Ne pas les activer / désactiver pour les futures bottes), vous pouvez taper service SERVICE_NAME. Par exemple:

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

  • sudo service apache2 start (Volonté DÉBUT le service Apache en supposant qu'il a été arrêté avant.).

  • service apache2 status (Vous indiquera l’état du service, s’il est activé / en cours d’exécution / désactivé).

  • sudo service apache2 restart (Volonté REDÉMARRER le service. Ceci est le plus couramment utilisé lorsque vous avez changé, un fichier de configuration. Dans ce cas, si vous avez modifié une configuration PHP ou une configuration Apache. Redémarrer vous évitera de devoir 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.) manque un paramètre. Pour d'autres services tels que le service de 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érifiez 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 - Afficher 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 vers /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 officielle Upstart (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é en faveur de start, stop, status Et restart. Il nous indiquera également si un service n'a pas encore été converti en démarrage:

Un service converti produirait 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 emploi inconnu.

Certains raccourcis ne peuvent fonctionner qu'avec le service commande ci-dessus mais pas avec les commandes ci-dessous, sauf si elles sont converties à 100% en services upstart:

  • DÉBUT - sudo start mysql

  • ARRÊTEZ - sudo stop mysql

  • REDÉMARRER - sudo restart mysql

  • STATUT - sudo status smbd

Activation / désactivation d'un service

Pour activer ou désactiver un service de manière permanente, vous devez:

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

où la strophe manual arrêtera Upstart de charger automatiquement le service au prochain démarrage. Tout service avec le .override la fin aura priorité sur le fichier de service original. Vous ne pourrez démarrer le service que manuellement par la suite. Si vous ne le souhaitez pas, supprimez simplement le .override. Par exemple:

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

Va mettre le service MySQL dans manual mode. Si vous ne le voulez pas, vous pouvez ensuite faire simplement

sudo rm /etc/init/mysql.override

et Redémarrer 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.


757
2017-12-29 21:26



Avez-vous besoin d'ajouter .service à chaque commande? systemctl mongod status a bien fonctionné. - Dan Dascalescu
@DanDascalescu non tu ne me laisses pas clarifier ça. - Luis Alvarado♦
Le fichier .override doit-il être placé dans /etc/init.d/, c'est-à-dire où le service est-il placé? - Obi Wan - PallavJha
Pourquoi Upstart est déconseillé en 15.04? Quelle est la bonne façon d'exécuter des scripts au démarrage / redémarrage dans Ubuntu 16.04 ou version ultérieure? - Kamalakannan J
@KamalakannanJ avez-vous utilisé les niveaux rc? (par exemple /etc/rc0.d) ou /etc/rc.local? - Luis Alvarado♦


Actuellement, il existe trois manières différentes de démarrer un logiciel en tant que service dans Ubuntu, SysV, Parvenu 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 utilisez le update-rc.d commande (ou dans les distributions RedHat, chkconfig) pour l'activer ou le 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 tu cours ls /etc/rc2.d vous pouvez voir l'ordre dans lequel les services seront tués avec un nom de fichier comme K##xxxx et a commencé avec les noms de fichiers S##xxxx. le ## dans S##xxxx signifie un "ordre de départ" pour le service xxxx. Inversement, le ## dans K##xxxx signifie l'ordre de mise à mort 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 Parvenua été créé.

Parvenu

Upstart utilise les fichiers de définition de travail dans /etc/init pour définir sur quels événements 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 une adresse IP dynamique.

Vous pouvez voir tous les fichiers de travail de démarrage en cours d'exécution ls /etc/init/*.conf

Permettez-moi de m'arrêter ici et de 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. Tout en travaillant sur l'équipe serveur de Canonical ces derniers mois, j'ai travaillé sur un certain nombre de fichiers de travail convertis, et le plus beau est qu'il 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, comme calamar et samba, ont été convertis.

Un service est-il basé?

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

status servicename

Si c'est un parvenu travail, il montrera ceci:

$ status statd
statd start/running, process 942

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

$ status apache2
status: Unknown job: apache2

Dans ce cas, apache2 n'a pas été converti en parvenu. Donc, pour désactiver apache2 tu viens de courir

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

Désactiver les services (emplois) au démarrage

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

Si vous voulez toujours pouvoir le démarrer manuellement, vous devez commenter le start on condition. Dis que tu veux installer samba, mais ne pas le faire démarrer automatiquement. Voici le fichier de travail (en natty):

description "SMB/CIFS File Server"
author      "Steve Langasek <steve.langasek@ubuntu.com>"

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

Désactiver samba, vous pouvez simplement mettre un # en face de la "start on local-filesystems". Notez que bien qu’il ne redémarre pas au démarrage, vous devez toujours l’arrêter avec

sudo service smbd stop

Si, cependant, vous ne voulez jamais samba pour commencer, je vous suggère de retirer le paquet. Si, toutefois, vous souhaitez qu’il soit installé, mais pas démarrable, 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 upstart qui sera dans 11.04, il y a un nouveau mot-clé qui désactive le start on et stop on strophes: 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 override fichier pour désactiver un service sans modifier la définition du travail, en mettant simplement le manual mot-clé en elle.


335
2018-01-06 18:25



On dirait que 11.04 a aussi la priorité. Alors echo manual >> /etc/init/<service>.override est préféré car il laisse le fichier .conf original intact. Quoi qu’il en soit, il est toujours dommage qu’une telle activation / désactivation de base ait mis 3 ans à se développer, et il n’ya pas d’interface graphique pour cela. - MestreLion
update-rc.d est ce qui compte vraiment - Tim
semble traiter beaucoup plus le sujet original que la réponse qui a été étiquetée comme réponse définitive par l’affiche de la question originale. Merci! :) - Henning
Dans mon cas, le dossier /etc/init/ssh.conf existe mais status ssh et status sshd les deux disent "Travail inconnu". Cette réponse ne semble pas aborder une telle possibilité? - Brian Z
status ssh me donne 'travail inconnu' aussi, mais service ssh status travaille pour moi - ptim


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

enter image description here

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 SPACEsur les niveaux d'exécution souhaités.

Jobs-Admin

Un autre substitut serait Jobs-Admin en installant à travers

sudo apt-get install jobs-admin

Qui fournit également une interface graphique comme celle-ci

jobs-admin preview

Pour afficher plus d'emplois, vous devez cocher la case Afficher les emplois protégés de 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. Aussi, nous pouvons voir les services du système en utilisant chkconfig –list

Les services peuvent être activés en utilisant

chkconfig <service> on

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

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

Et une autre option peut être référé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.


121
2018-06-28 18:00



sur le serveur Ubuntu: Package chkconfig is not available, but is referred to by another package. - pwned
@pwned Vous êtes libre de modifier et de publier les informations mises à jour concernant l'édition du serveur. Merci. - atenz
J'ai fait comme vous l'avez suggéré, maintenant c'est pour examen par les pairs. - pwned
jobs-admin ne permet pas de changer de travail (Ubuntu 14.04), produisant à la place un rapport de plantage ;-) - Sadi
sysv-rc-conf ne convient pas à une utilisation avec upstart ou systemd, il n'est manifestement réservé qu'à l'ancien système System 5 rc, qui n'a pas été utilisé par défaut sur Ubuntu Linux depuis près de dix ans. Le bogue n ° 791689 de Debian le reconnaît et se demande pourquoi il n'a pas été signalé comme étant en conflit avec systemd. - JdeBP


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

alt text

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

Capture d'écran empruntée à ce blogpost, qui montre aussi sysv-rc-conf - un outil similaire qui vous permet également de définir le niveau d'exécution. (Pour ceux qui se soucient suffisamment des 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.


48
2018-01-06 18:44



Est-ce que cela fonctionne toujours avec le bon départ? - oKtosiTe
Malheureusement non. Mais cela a fonctionné pour tous les cas que je voulais changer - les travaux de démarrage semblent être principalement des choses que je ne veux pas désactiver - horloge matérielle, démon de journal, réseau etc. (sur le serveur Ubuntu, au moins). Mais c'est quelque chose à savoir (je n'étais pas :), j'ai mis à jour le post. - j-g-faustus
Malheureusement, mysql a été converti en start-up. Et c'est un service que j'utilise uniquement lorsque je fais un projet. - MestreLion
Il y a un bogue avec rcconf sur Ubuntu 12.04 qui empêche le démarrage du programme. Pour résoudre le problème, vous devez installer le package de dialogue. - devius
Depuis que cette réponse a été écrite, update-rc.d a été changé, et certaines de ses fonctionnalités obsolètes ont été supprimées. Le bogue Debian # 727735 note que rcconf n'a pas été modifié pour correspondre. Et non, rcconf ne fonctionne pas non plus avec systemd, donc non applicable à l'un des systèmes d'initialisation par défaut pour Ubuntu Linux pour la dernière décennie. - JdeBP


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

  • Jobs-Admin

    sudo apt-get install jobs-admin
    

18
2018-05-21 10:27



Mais c'est trop simple, et ne permet pas de changer les "jobs protégés" (qu'est-ce que jobbs? Apple a Jobs, le système d'exploitation a des démons!) - kakaz
Je ne permets même pas de changer les "jobs non protégés" (Ubuntu 14.04), produisant à la place un rapport de panne ;-) - Sadi


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

En regardant man 5 init on trouvera une solution plus appropriée: utiliser une configuration de remplacement. Exemple court: Disons que nous avons un service appelé "foobar", donc il y aurait 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 s'exécute? Alors placez un passer outre fichier à côté de lui: /etc/init/foobar.override, contenant (éventuellement l'en-tête avec la description et) à la place le start on / stop on lignes que vous placez une ligne avec un mot: manual. De cette façon, vous dites au début d'utiliser essentiellement le foobar.conf, mais remplacez la définition de démarrage pour ne démarrer que ce service lorsqu'il est appliqué manuellement (via service foobar start dans notre exemple).


12
2018-06-30 20:27





Il y a aussi le Gestionnaire de démarrage.

À installer: sudo apt-get install bum

Plus d'infos: http://www.marzocca.net/linux/bum.html

enter image description here


8
2018-05-20 14:47



N'oubliez pas de vérifier le bouton "Avancé". - not2qubit