« SYSTEMD » : différence entre les versions
De TwisterWiki
(Page créée avec « == systemd c'est quoi ? == * systemd est le remplaçant de systemVinit * Les scripts dans /etc/init.d deviennent obsolètes et le fichier inittab est remplacé par /etc/sy... ») |
Aucun résumé des modifications |
||
Ligne 165 : | Ligne 165 : | ||
[Install] | [Install] | ||
WantedBy=multi-user.target | WantedBy=multi-user.target | ||
=== Options disponible pour un script === | |||
type = {simple, forking, oneshot, dbus, notify,idle} | |||
RemainAfterExit = {yes|no} |
Version du 23 juillet 2013 à 12:10
systemd c'est quoi ?
- systemd est le remplaçant de systemVinit
- Les scripts dans /etc/init.d deviennent obsolètes et le fichier inittab est remplacé par /etc/systemd/system/default.target
Quels sont les avantages ?
- Démarrage plus rapide car les services démarrent en parallèles
- les projets systemd et udev sont fusionnés mais pour le moment installés avec des paquets différents ---------- system V init
- Meilleur traçabilité sur les erreurs de démarrage des services
Quelques commandes utiles
- systemctl : commande permettant de contrôler systemd
- systemctl {start|stop|reload|restart|status} service
- systemctl reboot
- systemctl poweroff
- systemctl list-units : liste les services qui sont activés et affiche leur état
- Exemple
UNIT LOAD ACTIVE SUB JOB DESCRIPTION proc-sys-fs-binfmt_misc.automount loaded active waiting Arbitrary Executable File Formats File System Autom sys-devices-pci0...t2:0:0-2:0:0:0-block-sr0.device loaded active plugged VBOX_CD-ROM sys-devices-pci0...00-0000:00:03.0-net-p2p1.device loaded active plugged 82540EM Gigabit Ethernet Controller sys-devices-pci0...0000:00:05.0-sound-card0.device loaded active plugged 82801AA AC'97 Audio Controller sys-devices-pci0...0-0:0:0:0-block-sda-sda1.device loaded active plugged VBOX_HARDDISK sys-devices-pci0...0-0:0:0:0-block-sda-sda2.device loaded active plugged VBOX_HARDDISK sys-devices-pci0...t0:0:0-0:0:0:0-block-sda.device loaded active plugged VBOX_HARDDISK sys-devices-platform-serial8250-tty-ttyS0.device loaded active plugged /sys/devices/platform/serial8250/tty/ttyS0 sys-devices-platform-serial8250-tty-ttyS1.device loaded active plugged /sys/devices/platform/serial8250/tty/ttyS1 sys-devices-platform-serial8250-tty-ttyS2.device loaded active plugged /sys/devices/platform/serial8250/tty/ttyS2 sys-devices-platform-serial8250-tty-ttyS3.device loaded active plugged /sys/devices/platform/serial8250/tty/ttyS3 sys-devices-virtual-block-dm\x2d0.device loaded active plugged /sys/devices/virtual/block/dm-0 sys-devices-virtual-block-dm\x2d1.device loaded active plugged /sys/devices/virtual/block/dm-1 sys-module-configfs.device loaded active plugged /sys/module/configfs sys-module-fuse.device loaded active plugged /sys/module/fuse sys-subsystem-net-devices-p2p1.device loaded active plugged 82540EM Gigabit Ethernet Controller -.mount loaded active mounted / boot.mount loaded active mounted /boot dev-hugepages.mount loaded active mounted Huge Pages File System dev-mqueue.mount loaded active mounted POSIX Message Queue File System run-user-1000-gvfs.mount loaded active mounted /run/user/1000/gvfs sys-fs-fuse-connections.mount loaded active mounted FUSE Control File System sys-kernel-config.mount loaded active mounted Configuration File System sys-kernel-debug.mount loaded active mounted Debug File System rngd.service loaded failed failed Hardware RNG Entropy Gatherer Daemon
- systemctl status rngd : permet de consulté les erreurs de démarrage d'un service
rngd.service - Hardware RNG Entropy Gatherer Daemon Loaded: loaded (/usr/lib/systemd/system/rngd.service; enabled) Active: failed (Result: exit-code) since Thu, 2013-07-11 14:38:33 CEST; 1h 52min ago Main PID: 588 (code=exited, status=1/FAILURE) CGroup: name=systemd:/system/rngd.service Jul 11 14:38:33 chmartin2.ecritel.net systemd[1]: Starting Hardware RNG Entropy Gatherer Daemon... Jul 11 14:38:33 chmartin2.ecritel.net systemd[1]: Started Hardware RNG Entropy Gatherer Daemon. Jul 11 14:38:33 chmartin2.ecritel.net rngd[588]: Unable to open file: /dev/tpm0 Jul 11 14:38:33 chmartin2.ecritel.net rngd[588]: can't open any entropy source Jul 11 14:38:33 chmartin2.ecritel.net rngd[588]: Maybe RNG device modules are not loaded Jul 11 14:38:33 chmartin2.ecritel.net systemd[1]: rngd.service: main process exited, code=exited, status=1/FAILURE Jul 11 14:38:33 chmartin2.ecritel.net systemd[1]: Unit rngd.service entered failed state
- systemctl list-unit-files : liste les services qui sont activés
- Exemple
UNIT FILE STATE proc-sys-fs-binfmt_misc.automount static dev-hugepages.mount static dev-mqueue.mount static proc-fs-nfsd.mount static proc-sys-fs-binfmt_misc.mount static sys-fs-fuse-connections.mount static sys-kernel-config.mount static sys-kernel-debug.mount static tmp.mount static var-lib-nfs-rpc_pipefs.mount static cups.path enabled systemd-ask-password-console.path static systemd-ask-password-plymouth.path static systemd-ask-password-wall.path static abrt-ccpp.service enabled abrt-oops.service enabled abrt-vmcore.service enabled initrd-switch-root.service static instperf.service static ip6tables.service disabled iptables.service disabled
Emplacement des scripts de démarrage des services
- Les scripts de démarrage sont situés dans le dossier /usr/lib/systemd/system/
Les différents types de fichiers
- Les fichiers avec extension .mount
- Ces fichiers permettent de monter les "device" et point de montage
- Les fichiers .service
- Ces fichiers permettent de démarrer les services
- Les fichiers .umount
- Les fichiers .target
- Les fichiers .socket
Comment définir le "runlevel" ?
ln -s /lib/systemd/system/multi-user.target /etc/systemd/system/default.target ln -s /lib/systemd/system/graphical.target /etc/systemd/system/default.target
Contenu des scripts de démarrage
- Exemple de contenu de script systemd avec ssh
[Unit] Description=OpenSSH server daemon After=syslog.target network.target auditd.service [Service] EnvironmentFile=/etc/sysconfig/sshd ExecStartPre=/usr/sbin/sshd-keygen ExecStart=/usr/sbin/sshd -D $OPTIONS ExecReload=/bin/kill -HUP $MAINPID KillMode=process [Install] WantedBy=multi-user.target
- Autre exemple avec le script de démarrage de MySQL
[Unit] Description=MySQL database server After=syslog.target After=network.target [Service] Type=simple User=mysql Group=mysql ExecStartPre=/usr/libexec/mysqld-prepare-db-dir %n # Note: we set --basedir to prevent probes that might trigger SELinux alarms, # per bug #547485 ExecStart=/usr/bin/mysqld_safe --basedir=/usr ExecStartPost=/usr/libexec/mysqld-wait-ready $MAINPID # Give a reasonable amount of time for the server to start up/shut down TimeoutSec=300 # Place temp files in a secure directory, not /tmp PrivateTmp=true [Install] WantedBy=multi-user.target
Howto sur systemd
Activer un service au boot
- systemctl enable mon_service
- Résultat de la commande sur une fedora :
ln -s '/usr/lib/systemd/system/mon_service.service' '/etc/systemd/system/multi-user.target.wants/mon_service.service'
Comment écrire un script de démarrage
- Exemple pour le lancement de tomcat
[Unit] Description=Tomcat server After=syslog.target After=network.target [Service] Type=simple User=tomcat Group=tomcat ExecStart=/usr/local/tomcat/bin/startup.sh ExecStop=/usr/local/tomcat/bin/shutdown.sh RemainAfterExit=yes [Install] WantedBy=multi-user.target
Options disponible pour un script
type = {simple, forking, oneshot, dbus, notify,idle} RemainAfterExit = {yes|no}