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?
Certains services peuvent être activés/désactivés à l'aide de l'interface graphique (comme l'application startup
name__) 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:
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.
À 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.
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 start
name__, stop
name__, status
& restart
name__. 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 service
ci-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
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 manual
empê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 manual
name__. 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 manual
name__.
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.
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, chkconfig
name__) 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 xxxx
name__. Inversement, ##
dans K##xxxx
désigne l'ordre de suppression du service xxxx
name__.
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éé.
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.
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
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
À 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
: manual
name__. 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 override
pour désactiver un service sans modifier la définition du travail, en y mettant simplement le mot clé manual
name__.
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
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 SPACE
aux niveaux d'exécution souhaités.
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 tâches, vous devez cocher la case Afficher les tâches protégées dans son menu.
Et la troisième option serait chkconfig ,
Sudo apt-get install chkconfig
Il peut être utilisé via CLI chkconfig
name__, 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>
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.
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
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.
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
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).
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
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