Comment activer ou désactiver les services?

J'ai lu sur la façon d'activer et de 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 vise sur le /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 donner un court 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?

Il existe des services qui 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). Puis:

Activation/désactivation temporaire des services

Pour arrêter et démarrer les services temporairement (Ne les active / désactive pas pour les futures bottes), vous pouvez taper service SERVICE_NAME [action]. Exemple:

  • sudo service apache2 stop: Sera ARRÊTER le service Apache jusqu'au redémarrage ou jusqu'à ce que vous le redémarriez.
  • sudo service apache2 start: Sera COMMENCER le service Apache en supposant qu'il a é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é/NON en cours d'exécution.
  • sudo service apache2 restart: Sera REDÉMARRER service. Ceci est le 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. Le redémarrage 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 ferait que mentionner qu'il manque un paramètre. Pour d'autres services comme le service de réseautage, il mentionnerait la petite liste de toutes les options disponibles.

Systemd

À partir d'Ubuntu 15.04, Upstart sera obsolète au profit de Systemd. Avec Systemd pour gérer les services, nous pouvons effectuer les opérations suivantes (via le systemctl action SERVICE modèle):

  • 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 prend en charge, il rechargera les fichiers de configuration qui lui sont liés sans interrompre aucun processus qui utilise le service.
  • systemctl status SERVICE: Affiche l'état d'un service. Indique si un service est en cours d'exécution.
  • sudo systemctl enable SERVICE: Active le service, au prochain redémarrage ou au prochain événement de démarrage. Il persiste après le redémarrage.
  • sudo systemctl disable SERVICE: Désactive le service au prochain redémarrage ou à l'événement d'arrêt suivant. 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: Affiche toutes les informations sur le service.
  • sudo systemctl mask SERVICE: Désactiver complètement un service en le liant à /dev/null; vous ne pouvez pas démarrer le service manuellement ou 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 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 dira si un service converti est en cours d'exécution ou non. Notez que ceci est déconseillé en faveur de start, stop, status & restart. Il nous indiquera également si un service n'a pas encore été converti en upstart:

Un service converti affiche généralement l'état actuel (Démarrage, Exécution, Arrêt...) et l'ID de processus. Un service non converti donnerait une erreur à propos d'un emploi inconnu.

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

  • sudo start mysql: Commencer
  • sudo stop mysql: Arrêter
  • sudo restart mysql: Redémarrer
  • sudo status smbd: Statut

Activation / Désactivation d'un service

Pour empêcher un service de démarrer ou de s'arrêter définitivement, vous devez:

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

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

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

Mettra le service MySQL dans manual mode. Si vous ne le souhaitez pas, vous pouvez simplement le faire par la suite

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émarrent automatiquement à la fin de l'installation et démarreront à chaque démarrage de l'ordinateur. La désactivation, comme mentionné ci-dessus, permettra d'utiliser le service manual.

Actuellement, il existe en fait trois façons 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 démarré et exécuté directement par l'utilisateur.

SysV

La façon 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 basées sur RedHat, chkconfig) 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 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 des noms de fichiers S##xxxx. Le ## dans S##xxxx désigne 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-ce 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 elles étaient aléatoires et difficiles à exploiter pleinement. C'était la principale raison pour laquelle Parvenu a été créé.

Parvenu

Upstart utilise des fichiers de définition de tâches dans /etc/init définir sur quels événements 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 pendant que le réseau attend l'attribution d'une adresse IP dynamique.

Vous pouvez voir tous les fichiers de travail upstart en exécutant 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 en upstart. Pendant que je travaillais dans l'équipe serveur de Canonical au cours des derniers mois, j'ai travaillé sur un certain nombre de fichiers de travail convertis, et la meilleure partie est que cela 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, seule une poignée de services réseau traditionnels, comme calmar et samba, ont été convertis.

Un service est-il basé sur un débutant?

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

status servicename

Si c'est un parvenu job, ça montrera ça:

$ status statdstatd start/running, process 942

Mais si ce n'est pas le cas, vous verrez quelque chose de plus comme ça:

$ status apache2status: 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 disablesudo service apache2 stop

Désactiver les services (emplois) dans upstart

Les définitions d'emploi arriviste n'ont pas de update-rc.d commande. Pour désactiver la tâche, vous devez modifier directement le fichier de tâche pour la désactiver. Il y a deux façons de procéder.

Si vous souhaitez toujours pouvoir le démarrer manuellement, vous devez commenter le start on condition. Dites que vous voulez installer samba, mais ne pas le faire démarrer automatiquement. Voici le dossier d'emploi (en natty):

description "SMB/CIFS File Server"author      "Steve Langasek <steve.langasek@ubuntu.com>"start on local-filesystemsstop on runlevel [!2345]respawnpre-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/sambaend scriptexec smbd -F

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

Si, cependant, vous ne voulez jamais samba pour commencer, je suggérerais de retirer le paquet. Si, cependant, vous voulez 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 à l'aide de la strophe start/stop (à partir de 11.04)

En commençant par la version de upstart qui sera en 11.04, il y a un nouveau mot-clé qui désactive le start on et stop on strophe: 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# command from root shellecho manual >> /etc/init/mysql.override

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

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 fera apparaître une fenêtre interactive comme celle-ci

Vous pouvez naviguer davantage 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.

Emplois-Admin

Une autre alternative serait Emplois-Admin en installant à travers

sudo apt-get install jobs-admin

Qui fournit également une interface graphique comme celle-ci

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, montrant la liste des travaux Marche/Arrêt.Nous pouvons également afficher les services 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>

mise à jour-rc.d

Et une autre option peut être référée ici mise à jour-rc.d , expliqué brièvement ici.

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

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

sudo apt-get install rcconfsudo 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 lors des redémarrages.

Capture d'écran empruntée à ce billet 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 se soucient suffisamment des niveaux d'exécution pour souhaiter les changer :)

Malheureusement, rcconf ne fonctionne pas avec upstart (services répertorié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 qui sont pertinents lors de la connexion ssh à un serveur (Apache, Tomcat, mdadm, boinc-client...) n'ont pas encore été déplacés vers upstart.

J'ai découvert que jusqu'à bionic il y a cet outil d'interface graphique, quelque chose comme BUM mais compatible avec Upstart: Jobs-Admin

sudo apt-get install jobs-admin

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

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

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

La méthode la plus simple pour moi car j'utilise uniquement la CLI est update-rc.d.

Pour activer ou désactiver le démarrage automatique au redémarrage, etc. :

sudo update-rc.d <daemon|service> <enable|disable>

Exemple:

update-rc.d spamassassin enable

Pour arrêter ou démarrer un démon ou vérifier son statut:

sudo service <daemon|service> <start|stop|restart|reload|force-reload|status>

Exemple:

sudo service spamassassin status  spamassassin.service - Perl-based spam filter using text analysis   Loaded: loaded (/lib/systemd/system/spamassassin.service; disabled; vendor preset: enabled)   Active: active (running) since Thu 2020-05-21 13:04:10 SAST; 4s ago  Process: 1928 ExecStart=/usr/sbin/spamd -d --pidfile=/var/run/spamd.pid $OPTIONS (code=exited, status=0/SUCCES Main PID: 1949 (spamd)    Tasks: 3 (limit: 2361)   CGroup: /system.slice/spamassassin.service           ├─1949 /usr/bin/perl -T -w /usr/sbin/spamd -d --pidfile=/var/run/spamd.pid --create-prefs --max-child           ├─1951 spamd child           └─1952 spamd child`  etc  etc

update-rc.d peut faire un peu plus que la base indiquée ci-dessus:

usage: update-rc.d [-f] <basename> remove       update-rc.d [-f] <basename> defaults       update-rc.d [-f] <basename> defaults-disabled       update-rc.d <basename> disable|enable [S|2|3|4|5]        -f: force

Comme toujours; tu disparais. page de manuel.

J'utilise Stacer:

Stacer est un optimiseur de système open source et un moniteur d'applications qui aide les utilisateurs à gérer l'ensemble du système avec différents aspects, c'est un utilitaire système tout-en-un.

Il montre également les services et les processus. Une boîte à outils complète du système GUI.

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

@MarcelloNuccio: À partir d’Ubuntu 15.04, Upstart a été déconseillé au profit de Systemd.

Pour le réseautage, veuillez consulter: How to restart the networking service? - Ask Ubuntu

Ceci serait utile pour ceux qui sont coincés sur Fedora 12 et qui ont atterri ici. Dans le cas où linkrot ’ chkconfig` est ce que vous recherchez.

Les programmes de démarrage automatique sont configurés dans les manifestes` autostart ‘ou dans’*.fichiers de service ‘dans plusieurs emplacements, ainsi que dans’ init.d ’ ou ‘crontab’. Voir: upstart - How to start application after login on CentOS? - Unix & Linux Stack Exchange