Version : 2020.01

Dernière mise-à-jour : 2020/01/30 03:28

SO212 - Gestion du Démarrage et de l'Arrêt

Plateforme SPARC

La séquence de boot d'une station SPARC est la suivante :

  1. La PROM charge le bootblock
  2. Le bootblock charge le fichier ufsboot
  3. ufsboot charge le noyau
  4. Le fichier /etc/system est lu
  5. Le noyau charge les modules
  6. Le noyau lance /sbin/init
  7. init lit le fichier /etc/inittab

La liste des commandes de la PROM sont :

Commande Description
help Affiche les commandes
boot Démarrage du système
boot -s Démarrage en mode mono-utilisateur
boot -a Démarrage interactif
boot -r Démarrage avec création des fichiers périphériques après l'ajout des pilotes
banner Affiche des informations sur le système
probe-scsi-all Liste des périphériques SCSI
probe-scsi Liste des périphériques SCSI
printenv Affiche le périphérique de démarrage
setenv Modifie le périphérique de démarrage

La commande eeprom permet de modifier les paramètres de la mémoire PROM et d'y associer un mot de passe.

Plateforme PC

BIOS

Au démarrage de la machine, le premier programme exécuté est le BIOS. Le BIOS a pour fonction de :

  • Tester les composants et les circuits,
  • Faire appel au BIOS de la carte graphique pour initialiser le système d'affichage,
  • Détecter les périphériques de stockage,
  • Lancer le gestionnaire d'amorçage du système d'exploitation.

Gestionnaire d'amorçage

Le gestionnaire d'amorçage est en règle générale placé dans le MBR du disque. Le format du MBR est le suivant :

  • 446 octets pour le gestionnaire d'amorçage,
  • 64 octet pour la table de partitions, soit 16 octets par partition décrite,
  • 2 octets ayant une valeur fixe en hexadécimale de AA55.

Le gestionnaire d'amorçage sous Solaris est GRUB (Grand Unified Boot Loader).

Grub

grub se configure grâce au fichier /boot/grub/menu.lst selon la distribution utilisée. Pour visualiser ce fichier, il convient de saisir la commande suivante :

# cat /boot/grub/menu.lst
#pragma ident   "@(#)menu.lst   1.2     10/06/11 SMI"
#
# Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
#
# With zfs root the active menu.lst file is /<pool>/boot/grub/menu.lst
# This reference copy of the file is not used.
#
# default menu entry to boot
default 0
#
# menu timeout in second before default OS is booted
# set to -1 to wait for user input
timeout 10
#
# To enable grub serial console to ttya uncomment the following lines
# and comment out the splashimage line below
# WARNING: do not enable grub serial console when BIOS console serial
#       redirection is active.
#   serial --unit=0 --speed=9600
#   terminal serial
#
# Uncomment the following line to enable GRUB splashimage on console
splashimage /boot/grub/splash.xpm.gz
#
# To chainload another OS
#
# title Another OS
#       root (hd<disk no>,<partition no>)
#       chainloader +1
#
# To chainload a Solaris release not based on grub
#
# title Solaris 9
#       root (hd<disk no>,<partition no>)
#       chainloader +1
#       makeactive
#
# To load a Solaris instance based on grub
#
# title Solaris <version>
#       root (hd<disk no>,<partition no>,x)     --x = Solaris root slice
#       kernel /platform/i86pc/multiboot
#       module /platform/i86pc/boot_archive
#
# To override Solaris boot args (see kernel(1M)), console device and
# properties set via eeprom(1M) edit the "kernel" line to:
#
#   kernel /platform/i86pc/multiboot <boot-args> -B prop1=val1,prop2=val2,...
#
#---------- ADDED BY BOOTADM - DO NOT EDIT ----------
title Oracle Solaris 10 1/13 s10x_u11wos_24a X86
findroot (rootfs0,0,a)
kernel /platform/i86pc/multiboot
module /platform/i86pc/boot_archive
#---------------------END BOOTADM--------------------
#---------- ADDED BY BOOTADM - DO NOT EDIT ----------
title Solaris failsafe
findroot (rootfs0,0,a)
kernel /boot/multiboot -s
module /boot/amd64/x86.miniroot-safe
#---------------------END BOOTADM--------------------

Pour désinstaller grub du MBR, utilisez une disquette DOS pour démarrer la machine puis taper la commande suivante au prompt :

A> fdisk /mbr [Entrée]

ou utilisez la commande dd.

Le fichier /boot/grub/menu.lst ne doit jamais être modifié manuellement. Grub doit est administré par la commande bootadm :

# bootadm
bootadm: a command option must be specified
USAGE:
        bootadm update-archive [-vn] [-R altroot [-p platform>]]
        bootadm list-archive [-R altroot [-p platform>]]
        bootadm set-menu [-R altroot] key=value
        bootadm list-menu [-R altroot]

Il est donc possible de visualiser le menu de démarrage actuel ainsi que les options de Grub :

# bootadm list-menu
The location for the active GRUB menu is: /boot/grub/menu.lst
default 0
timeout 10
0 Oracle Solaris 10 1/13 s10x_u11wos_24a X86
1 Solaris failsafe

Processus Init

Le premier processus lancé par le noyau est Init. L'exécutable lancé est /sbin/init. Son rôle est de d'initialiser le système et de lancer certains autres services.

Niveaux d'exécution

Il existe 11 niveaux d'exécution ou RUNLEVELS sous Solaris. Dix des 11 sont réservés :

RUNLEVEL Description
0 Arrêt de la machine pour un système SPARC
S ou s Mode mono-utilisateur avec seul la partition racine montée
1 Mode mono-utilisateur pour la maintenance
2 Mode multi-utilisateur sans NFS
3 Mode multi-utilisateur avec NFS
4 Non-utilisé
5 Arrêt de la machine et coupure du courant
6 Redémarrage de la machine

Pour connaître le niveau d'exécution actuel de la machine, saisissez la commande suivante :

# who -r
   .       run-level 3  Nov 30 06:44     3      0  S

Pour modifier le niveau d'exécution courant, il convient d'utiliser la commande init ou telinit suivie du numéro du nouveau niveau d'exécution et éventuellement l'option suivante :

Option Description
Q ou q Demande à Init de relire le fichier /etc/inittab

Pour modifier le niveau d'exécution par défaut, il convient d'utiliser la commande svcadm -d.

Inittab

Le fichier /etc/inittab permet de définir les services à démarrer en fonction du RUNLEVEL :

# cat /etc/inittab
# Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
# Use is subject to license terms.
#
# The /etc/inittab file controls the configuration of init(1M); for more
# information refer to init(1M) and inittab(4).  It is no longer
# necessary to edit inittab(4) directly; administrators should use the
# Solaris Service Management Facility (SMF) to define services instead.
# Refer to smf(5) and the System Administration Guide for more
# information on SMF.
#
# For modifying parameters passed to ttymon, use svccfg(1m) to modify
# the SMF repository. For example:
#
#       # svccfg
#       svc:> select system/console-login
#       svc:/system/console-login> setprop ttymon/terminal_type = "xterm"
#       svc:/system/console-login> exit
#
#ident  "@(#)inittab    1.41    04/12/14 SMI"
ap::sysinit:/sbin/autopush -f /etc/iu.ap
sp::sysinit:/sbin/soconfig -f /etc/sock2path
smf::sysinit:/lib/svc/bin/svc.startd    >/dev/msglog 2<>/dev/msglog </dev/console
p3:s1234:powerfail:/usr/sbin/shutdown -y -i5 -g0 >/dev/msglog 2<>/dev/msglog

Dans l'exemple ci-dessus, chaque ligne non-commentée est composée de quatre champs, séparés par le caractère : :

Champ Nom Description
1 Identifiant Identifiant unique de la ligne composé de 1 à 4 caractères
2 RUNLEVELS Liste des niveaux d'exécution concernés par la ligne
3 Action Méthode utilisé pour lancer la commande se trouvant dans le champ 4
4 Commande Commande à lancer

L'analyse de notre fichier d'exemple indique que le champ action prend une des directives suivantes :

Directive Description
sysinit La commande est exécutée au démarrage da la machine avant les lignes boot et bootwait
powerfail La commande est exécutée quand init reçoit un signal SIGPWR d'un onduleur

Service Management Facility

Le SMF remplace le système de démarrage Unix System V basé sur des répertoires rcx.d.

Un service SMF est caractérisé par des entités :

  1. un SMF Manifest
    1. Propriétés par défaut du service
  2. une ou plusieurs méthodes
    1. un script permettant l'interaction avec le service
  3. un ou plusieurs exécutables
  4. un fichier journal
  5. un FMRI
    1. Fault Management Resource Identifier

Le fichier méthode de cron est /lib/svc/method/svc-cron:

# cat /lib/svc/method/svc-cron
#!/sbin/sh
#
# Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
# Use is subject to license terms.
#
# ident "@(#)svc-cron   1.2     04/11/05 SMI"
#
# Start method script for the cron service.
#

. /lib/svc/share/smf_include.sh

if [ -p /etc/cron.d/FIFO ]; then
        if /usr/bin/pgrep -x -u 0 -z `/sbin/zonename` cron >/dev/null 2>&1; then
                echo "$0: cron is already running"
                exit $SMF_EXIT_ERR_NOSMF
        fi
fi

if [ -x /usr/sbin/cron ]; then
        /usr/bin/rm -f /etc/cron.d/FIFO
        /usr/sbin/cron &
else
        exit 1
fi
exit $SMF_EXIT_OK

Une instance de service peut prendre plusieurs états :

  • UNINITIALIZED
    • Ceci est le statut initial de tout service, avant qu'il soit traité (et démarré) par svc.startd(1M).
  • OFFLINE
    • Cela signifie que le service est activé, mais qu'il n'est pas en cours de fonctionnement ou indisponible.
  • ONLINE
    • Ce statut indique que le service fonctionne. Ce statut est celui attendu lors du fonctionnement normal d'un service.
  • DEGRADED
    • Le service fonctionne, mais de manière limitée. Une restauration de la part de l'administrateur provoquera son passage en mode ONLINE.
  • MAINTENANCE
    • Le service est indisponible mais activé, et requiert une opération de l'administrateur afin d'être réparé et relancé.
  • DISABLED
    • Le service est désactivé et ne fonctionne pas. Il n'est pas lancé au démarrage de la machine.
  • LEGACY-RUN
    • Ce statut est utilisé pour des pseudo-services qui ne sont pas directement gérés par SMF. Il ne garantit pas que le service soit en fonctionnement.

Pour voir les service il convient d'utiliser la commande svcs -a :

# svcs -a
STATE          STIME    FMRI
legacy_run      6:44:47 lrc:/etc/rcS_d/S50sk98sol
legacy_run      6:44:50 lrc:/etc/rc2_d/S10lu
legacy_run      6:44:50 lrc:/etc/rc2_d/S20sysetup
legacy_run      6:44:50 lrc:/etc/rc2_d/S40llc2
legacy_run      6:44:50 lrc:/etc/rc2_d/S42ncakmod
legacy_run      6:44:50 lrc:/etc/rc2_d/S47pppd
legacy_run      6:44:50 lrc:/etc/rc2_d/S70uucp
legacy_run      6:44:50 lrc:/etc/rc2_d/S72autoinstall
legacy_run      6:44:50 lrc:/etc/rc2_d/S73cachefs_daemon
legacy_run      6:44:51 lrc:/etc/rc2_d/S81dodatadm_udaplt
legacy_run      6:44:51 lrc:/etc/rc2_d/S89PRESERVE
legacy_run      6:44:51 lrc:/etc/rc2_d/S94ncalogd
legacy_run      6:44:51 lrc:/etc/rc2_d/S98deallocate
legacy_run      6:44:51 lrc:/etc/rc3_d/S16boot_server
legacy_run      6:44:51 lrc:/etc/rc3_d/S50apache
legacy_run      6:44:51 lrc:/etc/rc3_d/S80mipagent
disabled        6:44:39 svc:/system/metainit:default
disabled        6:44:39 svc:/system/device/mpxio-upgrade:default
disabled        6:44:39 svc:/network/ipsec/ike:default
disabled        6:44:39 svc:/network/ipsec/manual-key:default
disabled        6:44:39 svc:/network/ipfilter:default
disabled        6:44:39 svc:/network/rpc/keyserv:default
disabled        6:44:39 svc:/network/rpc/nisplus:default
disabled        6:44:39 svc:/network/nis/server:default
disabled        6:44:39 svc:/network/nis/client:default
disabled        6:44:39 svc:/network/dns/client:default
disabled        6:44:39 svc:/network/ldap/client:default
disabled        6:44:39 svc:/network/winbind:default
disabled        6:44:39 svc:/network/inetd-upgrade:default
disabled        6:44:40 svc:/system/mdmonitor:default
disabled        6:44:40 svc:/application/print/server:default
disabled        6:44:40 svc:/network/ntp:default
disabled        6:44:40 svc:/system/auditd:default
disabled        6:44:40 svc:/system/patch-finish:delete
disabled        6:44:40 svc:/system/pools:default
disabled        6:44:40 svc:/system/rcap:default
disabled        6:44:40 svc:/network/rpc/bootparams:default
disabled        6:44:40 svc:/network/samba:default
disabled        6:44:40 svc:/network/wins:default
disabled        6:44:40 svc:/network/dhcp-server:default
disabled        6:44:40 svc:/network/nfs/server:default
disabled        6:44:40 svc:/network/rarp:default
disabled        6:44:40 svc:/application/gdm2-login:default
disabled        6:44:40 svc:/system/pools/dynamic:default
disabled        6:44:40 svc:/application/management/webmin:default
disabled        6:44:40 svc:/application/database/postgresql_83:default_32bit
disabled        6:44:40 svc:/application/database/postgresql_83:default_64bit
disabled        6:44:40 svc:/application/database/postgresql:version_81
disabled        6:44:40 svc:/application/database/postgresql:version_82
disabled        6:44:40 svc:/application/database/postgresql:version_82_64bit
disabled        6:44:40 svc:/system/prepatch:default
disabled        6:44:40 svc:/milestone/patching:default
disabled        6:44:40 svc:/network/dns/server:default
disabled        6:44:40 svc:/network/routing/legacy-routing:ipv4
disabled        6:44:40 svc:/network/routing/legacy-routing:ipv6
disabled        6:44:40 svc:/network/routing/ndp:default
disabled        6:44:40 svc:/network/routing/rdisc:default
disabled        6:44:40 svc:/network/ipv6-forwarding:default
disabled        6:44:40 svc:/network/routing/ripng:default
disabled        6:44:40 svc:/network/routing/zebra:quagga
disabled        6:44:40 svc:/network/routing/ripng:quagga
disabled        6:44:40 svc:/network/routing/route:default
disabled        6:44:40 svc:/network/ipv4-forwarding:default
disabled        6:44:40 svc:/network/routing/rip:quagga
disabled        6:44:40 svc:/network/routing/ospf:quagga
disabled        6:44:40 svc:/network/routing/ospf6:quagga
disabled        6:44:40 svc:/network/routing/bgp:quagga
disabled        6:44:40 svc:/network/security/kadmin:default
disabled        6:44:40 svc:/network/security/krb5kdc:default
disabled        6:44:40 svc:/network/tnd:default
disabled        6:44:40 svc:/network/http:apache2
disabled        6:44:40 svc:/network/apocd/udp:default
disabled        6:44:40 svc:/network/nis/passwd:default
disabled        6:44:40 svc:/network/nis/update:default
disabled        6:44:40 svc:/network/nis/xfr:default
disabled        6:44:40 svc:/network/ipmievd:default
disabled        6:44:40 svc:/network/ntp4:default
disabled        6:44:40 svc:/network/slp:default
disabled        6:44:40 svc:/system/consadm:default
disabled        6:44:40 svc:/system/hotplug:default
disabled        6:44:40 svc:/system/labeld:default
disabled        6:44:40 svc:/system/tsol-zones:default
disabled        6:44:40 svc:/system/iscsitgt:default
disabled        6:44:40 svc:/system/sar:default
disabled        6:44:49 svc:/application/x11/xvnc-inetd:default
disabled        6:44:49 svc:/network/rpc/spray:default
disabled        6:44:49 svc:/network/rpc/wall:default
disabled        6:44:49 svc:/network/rpc/ocfserv:default
disabled        6:44:49 svc:/network/rpc/rex:default
disabled        6:44:49 svc:/network/security/krb5_prop:default
disabled        6:44:49 svc:/network/comsat:default
disabled        6:44:49 svc:/network/login:eklogin
disabled        6:44:49 svc:/network/login:klogin
disabled        6:44:49 svc:/network/rexec:default
disabled        6:44:49 svc:/network/shell:kshell
disabled        6:44:49 svc:/network/talk:default
disabled        6:44:49 svc:/network/swat:default
disabled        6:44:49 svc:/network/chargen:dgram
disabled        6:44:49 svc:/network/chargen:stream
disabled        6:44:49 svc:/network/daytime:dgram
disabled        6:44:49 svc:/network/daytime:stream
disabled        6:44:49 svc:/network/discard:dgram
disabled        6:44:49 svc:/network/discard:stream
disabled        6:44:49 svc:/network/echo:dgram
disabled        6:44:49 svc:/network/echo:stream
disabled        6:44:49 svc:/network/time:dgram
disabled        6:44:49 svc:/network/time:stream
disabled        6:44:49 svc:/network/tname:default
disabled        6:44:50 svc:/network/uucp:default
online          6:44:39 svc:/system/svc/restarter:default
online          6:44:40 svc:/system/installupdates:default
online          6:44:40 svc:/milestone/name-services:default
online          6:44:40 svc:/network/pfil:default
online          6:44:40 svc:/network/tnctl:default
online          6:44:40 svc:/network/loopback:default
online          6:44:40 svc:/system/filesystem/root:default
online          6:44:40 svc:/system/scheduler:default
online          6:44:41 svc:/system/boot-archive:default
online          6:44:41 svc:/system/filesystem/usr:default
online          6:44:41 svc:/platform/i86pc/eeprom:default
online          6:44:42 svc:/system/keymap:default
online          6:44:42 svc:/system/device/local:default
online          6:44:42 svc:/system/filesystem/minimal:default
online          6:44:42 svc:/network/ilomconfig-interconnect:default
online          6:44:42 svc:/system/rmtmpfiles:default
online          6:44:42 svc:/system/coreadm:default
online          6:44:42 svc:/system/name-service-cache:default
online          6:44:42 svc:/system/resource-mgmt:default
online          6:44:42 svc:/system/power:default
online          6:44:42 svc:/system/sysevent:default
online          6:44:42 svc:/system/device/fc-fabric:default
online          6:44:42 svc:/milestone/devices:default
online          6:44:42 svc:/system/cryptosvc:default
online          6:44:42 svc:/network/ipsec/ipsecalgs:default
online          6:44:42 svc:/network/ipsec/policy:default
online          6:44:42 svc:/system/pkgserv:default
online          6:44:42 svc:/system/manifest-import:default
online          6:44:42 svc:/system/patchchk:default
online          6:44:43 svc:/application/print/ppd-cache-update:default
online          6:44:47 svc:/network/physical:default
online          6:44:47 svc:/milestone/network:default
online          6:44:47 svc:/system/identity:domain
online          6:44:47 svc:/system/identity:node
online          6:44:47 svc:/system/picl:default
online          6:44:47 svc:/milestone/single-user:default
online          6:44:48 svc:/network/initial:default
online          6:44:48 svc:/network/routing-setup:default
online          6:44:48 svc:/system/filesystem/local:default
online          6:44:48 svc:/network/shares/group:default
online          6:44:48 svc:/system/sysidtool:net
online          6:44:48 svc:/system/cron:default
online          6:44:48 svc:/system/boot-archive-update:default
online          6:44:49 svc:/network/rpc/bind:default
online          6:44:49 svc:/system/sysidtool:system
online          6:44:49 svc:/network/nfs/mapid:default
online          6:44:49 svc:/network/nfs/cbd:default
online          6:44:49 svc:/network/service:default
online          6:44:49 svc:/platform/i86pc/kdmconfig:default
online          6:44:49 svc:/network/nfs/status:default
online          6:44:49 svc:/system/postrun:default
online          6:44:49 svc:/milestone/sysconfig:default
online          6:44:49 svc:/system/sac:default
online          6:44:49 svc:/network/iscsi/initiator:default
online          6:44:49 svc:/network/nfs/nlockmgr:default
online          6:44:49 svc:/system/utmp:default
online          6:44:49 svc:/system/console-login:default
online          6:44:49 svc:/network/inetd:default
online          6:44:49 svc:/application/management/wbem:default
online          6:44:49 svc:/application/opengl/ogl-select:default
online          6:44:50 svc:/network/rpc/gss:default
online          6:44:50 svc:/network/nfs/client:default
online          6:44:50 svc:/network/rpc/meta:default
online          6:44:50 svc:/application/x11/xfs:default
online          6:44:50 svc:/application/font/stfsloader:default
online          6:44:50 svc:/network/rpc/rstat:default
online          6:44:50 svc:/network/rpc/cde-calendar-manager:default
online          6:44:50 svc:/network/rpc/cde-ttdbserver:tcp
online          6:44:50 svc:/network/rpc/rusers:default
online          6:44:50 svc:/network/rpc/mdcomm:default
online          6:44:50 svc:/network/rpc/metamed:default
online          6:44:50 svc:/network/rpc/metamh:default
online          6:44:50 svc:/network/rpc/smserver:default
online          6:44:50 svc:/network/cde-spc:default
online          6:44:50 svc:/network/security/ktkt_warn:default
online          6:44:50 svc:/network/finger:default
online          6:44:50 svc:/network/login:rlogin
online          6:44:50 svc:/network/shell:default
online          6:44:50 svc:/system/filesystem/autofs:default
online          6:44:50 svc:/network/nfs/rquota:default
online          6:44:50 svc:/network/ftp:default
online          6:44:50 svc:/network/stdiscover:default
online          6:44:50 svc:/network/stlisten:default
online          6:44:50 svc:/network/telnet:default
online          6:44:50 svc:/system/dumpadm:default
online          6:44:50 svc:/network/rpc-100235_1/rpc_ticotsord:default
online          6:44:50 svc:/system/system-log:default
online          6:44:50 svc:/system/filesystem/volfs:default
online          6:44:50 svc:/network/ssh:default
online          6:44:50 svc:/network/sendmail-client:default
online          6:44:50 svc:/network/smtp:sendmail
online          6:44:50 svc:/application/management/seaport:default
online          6:44:50 svc:/application/management/snmpdx:default
online          6:44:51 svc:/milestone/multi-user:default
online          6:44:51 svc:/system/boot-config:default
online          6:44:51 svc:/application/management/sma:default
online          6:44:51 svc:/system/fmd:default
online          6:44:51 svc:/application/management/dmi:default
online          6:44:51 svc:/application/font/fc-cache:default
online          6:44:51 svc:/application/stosreg:default
online          6:44:51 svc:/milestone/multi-user-server:default
online          6:44:51 svc:/system/zones:default
online          6:44:51 svc:/application/cde-printinfo:default
online          6:44:52 svc:/application/graphical-login/cde-login:default
online          6:44:59 svc:/system/webconsole:console
offline         6:44:40 svc:/application/management/ocm:default
offline         6:44:40 svc:/application/print/ipp-listener:default
offline         6:44:49 svc:/application/print/rfc1179:default

Pour lister les processus associés à un service, il convient d'utiliser la commande svcs -p <FMRI>:

# svcs -p svc:/system/sac:default
STATE          STIME    FMRI
online          6:44:49 svc:/system/sac:default
                6:44:49      412 sac
                6:44:49      417 ttymon

Pour consulter les détails d'un service il convient d'utiliser la commande svcs -l <FMRI> :

# svcs -l svc:/system/sac:default
fmri         svc:/system/sac:default
name         SAF service access controller
enabled      true
state        online
next_state   none
state_time   Sat Nov 30 06:44:49 2019
logfile      /var/svc/log/system-sac:default.log
restarter    svc:/system/svc/restarter:default
contract_id  58 
dependency   require_all/none svc:/system/filesystem/local (online)
dependency   require_all/none svc:/milestone/sysconfig (online)

Pour désactiver un service il convient d'utiliser la commande svcadm disable [-t] <FMRI>. L'option -t indique que le service est arrêté d'une manière temporaire et sera re-démarré au prochain re-boot du système :

# svcadm disable cron
# svcs -l cron
fmri         svc:/system/cron:default
name         clock daemon (cron)
enabled      false
state        disabled
next_state   none
state_time   Sat Nov 30 08:18:52 2019
logfile      /var/svc/log/system-cron:default.log
restarter    svc:/system/svc/restarter:default
contract_id  
dependency   require_all/none svc:/system/filesystem/local (online)
dependency   require_all/none svc:/milestone/name-services (online)

La commande svcadm est aussi utiliser pour :

  • Démarrer un service. L'option -r précise que le démarrage des dépendances doit aussi être effectué :
# svcadm enable [-r] <FMRI> [Entrée]
  • Relancer un service :
# svcadm restart <FMRI> [Entrée]
  • Rafraîchir un service :
# svcadm refresh <FMRI> [Entrée]
  • Réactiver un service. Ceci est utilisé pour passer un service antérieurement en mode maintenance ou en mode Degraded vers le mode Online après la réparation du service concerné :
# svcadm clear <FMRI> [Entrée]

Pour consulter la méthode associée à un service, il convient d'utiliser la commande svcprop -p :

# svcprop -p start/exec system/cron
/lib/svc/method/svc-cron

Activer et Désactiver un Service

Vous allez travailler sur le service cron. Vérifiez d'abord l'état du service :

# svcs cron
STATE          STIME    FMRI
disabled        8:18:52 svc:/system/cron:default

Démarrez maintenant le service cron :

# svcadm enable cron

Contrôlez maintenant son état :

# svcs cron
STATE          STIME    FMRI
online          8:21:14 svc:/system/cron:default

Rendez votre service cron inutilisable :

# mv /lib/svc/method/svc-cron /lib/svc/method/svc-cron.old
# svcadm restart cron

Contrôlez maintenant son état :

# svcs cron
STATE          STIME    FMRI
maintenance     8:22:28 svc:/system/cron:default

Identifiez maintenant le fichier log du service :

# svcs -x cron
svc:/system/cron:default (clock daemon (cron))
 State: maintenance since Sat Nov 30 08:22:28 2019
Reason: Start method failed repeatedly, last exited with status 1.
   See: http://sun.com/msg/SMF-8000-KS
   See: cron(1M)
   See: crontab(1)
   See: /var/svc/log/system-cron:default.log
Impact: This service is not running.

Examinez le fichier log pour connaître le problème à résoudre :

# cat /var/svc/log/system-cron:default.log
[ Nov 29 13:26:34 Disabled. ]
[ Nov 29 13:26:34 Rereading configuration. ]
[ Nov 29 13:26:37 Enabled. ]
[ Nov 29 13:26:46 Executing start method ("/lib/svc/method/svc-cron") ]
[ Nov 29 13:26:46 Method "start" exited with status 0 ]
[ Nov 29 17:41:20 Executing start method ("/lib/svc/method/svc-cron") ]
[ Nov 29 17:41:20 Method "start" exited with status 0 ]
[ Nov 30 05:28:20 Executing start method ("/lib/svc/method/svc-cron") ]
[ Nov 30 05:28:20 Method "start" exited with status 0 ]
[ Nov 30 06:14:40 Executing start method ("/lib/svc/method/svc-cron") ]
[ Nov 30 06:14:41 Method "start" exited with status 0 ]
[ Nov 30 06:19:26 Executing start method ("/lib/svc/method/svc-cron") ]
[ Nov 30 06:19:26 Method "start" exited with status 0 ]
[ Nov 30 06:22:09 Executing start method ("/lib/svc/method/svc-cron") ]
[ Nov 30 06:22:09 Method "start" exited with status 0 ]
[ Nov 30 06:44:48 Executing start method ("/lib/svc/method/svc-cron") ]
[ Nov 30 06:44:48 Method "start" exited with status 0 ]
[ Nov 30 08:18:52 Stopping because service disabled. ]
[ Nov 30 08:18:52 Executing stop method (:kill) ]
[ Nov 30 08:21:14 Enabled. ]
[ Nov 30 08:21:14 Executing start method ("/lib/svc/method/svc-cron") ]
[ Nov 30 08:21:14 Method "start" exited with status 0 ]
[ Nov 30 08:22:28 Stopping because service restarting. ]
[ Nov 30 08:22:28 Executing stop method (:kill) ]
[ Nov 30 08:22:28 Executing start method ("/lib/svc/method/svc-cron") ]
/sbin/sh: /lib/svc/method/svc-cron: not found
[ Nov 30 08:22:28 Method "start" exited with status 1 ]
[ Nov 30 08:22:28 Executing start method ("/lib/svc/method/svc-cron") ]
/sbin/sh: /lib/svc/method/svc-cron: not found
[ Nov 30 08:22:28 Method "start" exited with status 1 ]
[ Nov 30 08:22:28 Executing start method ("/lib/svc/method/svc-cron") ]
/sbin/sh: /lib/svc/method/svc-cron: not found
[ Nov 30 08:22:28 Method "start" exited with status 1 ]

Notez la ligne :

/sbin/sh: /lib/svc/method/svc-cron: not found

Réparez maintenant le service cron :

# mv /lib/svc/method/svc-cron.old /lib/svc/method/svc-cron

Lancez le service cron :

# svcadm clear cron
# svcadm enable -r cron

Dernièrement, vérifiez le bon fonctionnement du service cron :

# svcs cron
STATE          STIME    FMRI
online          8:24:47 svc:/system/cron:default

Arrêt du Système

La commande shutdown

La commande utilisée pour arrêter le système est la commande shutdown :

shutdown [-y] [-gsecondes] [-irunlevel]

Les options sont :

Option Description
-y Commande non-intéractive
-gsecondes Délai de grâce en secondes
-irunlevel Choix du runlevel de destination

L'option -i peut prendre plusieurs valeurs :

Valeur Description
s Single User. Ceci est le comportement par défaut
0 Arrêt complet SPARC
5 Arrêt complet x86
6 Redémarrage

Pour mieux comprendre, saisissez la commande suivante pour arrêter la machine dans 6 minutes :

# shutdown -y -g360 -i0

Shutdown started.    Sat Nov 30 08:26:05 CET 2019

Broadcast Message from root (pts/2) on solaris.i2tch.loc Sat Nov 30 08:26:05...
The system solaris.i2tch.loc will be shut down in 6 minutes 

showmount: solaris.i2tch.loc: RPC: Program not registered

Ouvrez un autre terminal puis saisissez la commande suivante pour rechercher le PID du processus shutdown :

# ps -ef | grep shutdown
    root   907   824   0 08:26:06 pts/2       0:00 /sbin/sh /usr/sbin/shutdown -y -g360 -i0
    root   948   932   0 08:27:14 pts/3       0:00 grep shutdown

Tuez maintenat le processus du shutdown :

# kill -9 907

L'utilisation de la commande shutdown peut être accordée à d'autres utilisateurs de root en utilisant le fichier /etc/shutdown.allow

Autres commandes

Trois autres commandes existent pour arrêter la machine :

Commande Description
halt Arrête le système ( RUNLEVEL 0 )
reboot Re-démarre le système ( RUNLEVEL 5/6 )
poweroff Arrête le système ( RUNLEVEL 0 ) et essaie de couper l'alimentation

<html> <center> Copyright © 2020 Hugh Norris. </center> </html>

Menu