web-dev-qa-db-fra.com

Comment activer ou désactiver les services?

J'ai lu comment activer et désactiver des 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 vise le dossier /etc/init.d et son contenu.

L’autre que j’ai trouvée 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 exemple, étape par étape, à l'épreuve des balles, sur la façon d'ajouter un service dans Ubuntu et de l'activer et de le désactiver?

799
NES

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

Pour le terminal, vous avez plusieurs options. Commencez par ouvrir un terminal (saisissez "terminal" dans le tableau de bord, par exemple, et ouvrez-le). Ensuite:

Services d'activation/désactivation temporaires

Pour arrêter et démarrer les services temporairement (ne les activez/désactivez pas pour les futurs démarrages), vous pouvez taper service SERVICE_NAME. Par exemple:

  • Sudo service Apache2 stop (Will STOP le service Apache jusqu'au redémarrage ou jusqu'à ce que vous le redémarriez).

  • Sudo service Apache2 start (Will START le service Apache en supposant qu'il a été arrêté auparavant.).

  • service Apache2 status (vous indiquera le statut du service s'il est activé/en cours d'exécution sur désactivé/NON en cours d'exécution.).

  • Sudo service Apache2 restart (Will RESTART 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 d’avoir à arrêter/démarrer avec 2 lignes de commande)

  • service Apache2 (Dans ce cas, étant donné que vous n'avez pas mentionné ACTION à exécuter pour le service, toutes les options disponibles pour ce service spécifique seront affichées.) Cet aspect varie en fonction du service. Par exemple, avec MySQL, il manque un paramètre. Pour d'autres services tels que les services de réseau, mentionnons la petite liste de toutes les options disponibles.


SYSTEMD

À partir de Ubuntu 15.04, Upstart sera obsolète au profit de Systemd. Avec Systemd pour gérer les services, nous pouvons effectuer les tâches suivantes:

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 qui lui sont associés sans interrompre aucun processus utilisant le service.

systemctl status SERVICE - Indique 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 lors du prochain redémarrage ou lors du 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érifie si un service est actuellement actif.

systemctl show SERVICE - Affiche 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 ni l'activer.

Sudo systemctl unmask SERVICE - Supprime le lien vers /dev/null et restaure la possibilité d'activer et/ou de démarrer manuellement le service.


UPSTART (obsolète depuis le 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 version Upstart), nous pourrions utiliser les commandes suivantes:

status SERVICE - Cela nous dira si un service converti est en cours d'exécution ou non. Notez que ceci est déconseillé en faveur de startname__, stopname__, status& restartname__. Il nous dira également si un service n'a pas encore été converti en primeur:

Un service converti afficherait généralement l'état actuel (Démarrer, En cours, Arrêter ...) et l'identifiant du processus. Un service non converti donnerait une erreur concernant un tâche inconnue.

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

  • START - Sudo start mysql

  • STOP - Sudo stop mysql

  • RESTART - Sudo restart mysql

  • STATUS - Sudo status smbd

Activer/désactiver un service

Pour que le service démarre ou s’arrête de manière permanente, vous devez:

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

où la strophe manualempêchera Upstart de charger automatiquement le service au prochain démarrage. Tout service avec la fin .override aura la priorité sur le fichier de service d'origine. Par la suite, vous ne pourrez démarrer le service manuellement. Si vous ne le souhaitez pas, supprimez simplement le .override. Par exemple:

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

Met le service MySQL en mode manualname__. Si vous ne le souhaitez pas, vous pouvez simplement faire

Sudo rm /etc/init/mysql.override

et redémarrez pour que le service redémarre automatiquement. Bien sûr, pour activer un service, le moyen le plus courant consiste à l’installer. Si vous installez Apache, Nginx, MySQL ou d’autres, ils démarreront automatiquement à la fin de l’installation et à chaque démarrage de l’ordinateur. La désactivation, comme mentionné ci-dessus, utilisera le service manualname__.

808
Luis Alvarado

Actuellement, il existe actuellement trois manières différentes de démarrer un logiciel en tant que service sous Ubuntu: SysV, pstart ​​et systemd. Un service est défini ici comme un programme exécuté en arrière-plan par le système, par opposition à un programme lancé et exécuté directement par l'utilisateur.

SysV

La méthode traditionnelle de démarrage des services sous Linux consistait à placer un script dans /etc/init.d, puis à utiliser la commande update-rc.d (ou dans les distributions basées sur RedHat, chkconfigname__) pour l'activer ou le désactiver.

Cette commande utilise une logique légèrement 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 tués avec un nom de fichier tel que K##xxxx et démarré avec les noms de fichier S##xxxx. Le ## dans S##xxxx signifie un "ordre de démarrage" pour le service xxxxname__. Inversement, ## dans K##xxxx désigne l'ordre de suppression du service xxxxname__.

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, ce qui rendait le temps de démarrage du système très lent . Des tentatives ont été faites pour mettre cela en parallèle, mais elles étaient aléatoires et difficiles à exploiter pleinement. C'est la raison principale pour laquelle pstart ​​a été créé.

Parvenu

Upstart utilise les fichiers de définition de travail de /etc/init pour définir les événements sur lesquels un service doit être démarré. Ainsi, pendant le 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 en attendant que le réseau attende qu'une adresse IP dynamique soit attribuée.

Vous pouvez voir tous les fichiers de travail parvenus 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 en version par défaut. Au cours des derniers mois au sein de l’équipe serveur de Canonical, j’ai travaillé sur un certain nombre de fichiers d’emploi convertis, et le plus agréable est qu’il permet de se débarrasser de tout le script "magique" et peu de 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 est-il basé sur le début?

Afin de déterminer si un service est basé sur la version upstart, vous pouvez exécuter la commande status:

status servicename

Si c'est un travail pstart, il affichera ceci:

$ status statd
statd start/running, process 942

Mais si ce n'est pas le cas, vous verrez quelque chose de plus semblable à ceci:

$ status Apache2
status: Unknown job: Apache2

Dans ce cas, Apache2 n'a pas été converti en pstart. Donc, pour désactiver Apache2 il suffit de lancer

Sudo update-rc.d Apache2 disable
Sudo service Apache2 stop

Désactiver les services (jobs) dans upstart

Les définitions de travail Upstart n'ont pas de commande update-rc.d. Pour désactiver le travail, vous devez éditer 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 la condition start on. Disons que vous voulez 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 # devant le "start on local-filesystems". Notez que même si la sauvegarde ne démarre pas au démarrage, vous devez l’arrêter cette fois avec

Sudo service smbd stop

Si, toutefois, vous ne voulez jamais que samba commence, je suggérerais de supprimer le paquet. Si, toutefois, vous voulez l’installer, mais pas démarrer, vous pouvez aussi faire:

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

Désactiver un service à l'aide de 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 les strophes start on et stop on: manualname__. Il existe donc un autre moyen de désactiver le service à partir de 11.04:

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

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

Vous pouvez créer un fichier overridepour désactiver un service sans modifier la définition du travail, en y mettant simplement le mot clé manualname__.

349
SpamapS

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

Ce qui ouvrira une fenêtre interactive comme celle-ci

enter image description here

Vous pouvez continuer à 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 SPACEaux 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

jobs-admin preview

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 CLI chkconfigname__, en affichant la liste des travaux On/Off. Nous pouvons également afficher les services système à l'aide de chkconfig –list

Les services peuvent être activés à l'aide de

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.dest utilisé à la place de chkconfig.

128
atenz

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

Sudo apt-get install rcconf
Sudo rcconf

alt text

Naviguez avec les touches de tabulation et les flèches, appuyez sur la barre d'espacement pour activer/désactiver. Les modifications sont persistantes lors des redémarrages.

Capture empruntée à this blogpost , qui affiche également sysv-rc-conf - un outil similaire qui vous permet également de définir le niveau d'exécution. (Pour ceux qui se soucient assez des niveaux d'exécution pour souhaiter les changer :)

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

Heureusement, de nombreux services pertinents pour ssh-ing sur un serveur (Apache, Tomcat, mdadm, boinc-client ...) n'ont pas encore été déplacés.

48
j-g-faustus

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
    
18
Postadelmaga

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

En regardant man 5 init, on trouvera une solution plus appropriée: en utilisant une configuration prioritaire. Petit exemple: supposons que nous ayons un service appelé "foobar", il y aurait donc un fichier appelé /etc/init/foobar.conf avec sa configuration upstart. Maintenant, vous ne voulez pas supprimer ce fichier, ni le modifier - mais vous ne voulez pas non plus que ce service soit exécuté? Donc, placez un override fichier à côté: /etc/init/foobar.override, contenant (éventuellement l'en-tête avec la description et) les lignes start on/stop on où vous placez une ligne avec un mot: manual. De cette façon, vous indiquez à upstart d'utiliser fondamentalement le foobar.conf, mais vous substituez la définition de démarrage pour ne démarrer ce service que s'il est imposé manuellement (via service foobar start dans notre exemple).

12
Izzy

Il existe également le gestionnaire de démarrage .

Pour installer: Sudo apt-get install bum

Informations complémentaires: http://www.marzocca.net/linux/bum.html

enter image description here

8
Sadi

J'utilise Stacer. Il montre également les services et les processus. Une boîte à outils complète du système graphique. https://github.com/oguzhaninan/Stacer

2
HDK Bouma