• [^] # Re: If it works, don't fix it.

    Posté par . En réponse au journal Chronique des dinosaures rétrogrades. Évalué à 10.

    Tu trouve plus lisible

    #! /bin/sh
    #
    # Init script for libvirtd
    #
    # (c) 2007 Guido Guenther <agx@sigxcpu.org>
    # based on the skeletons that comes with dh_make
    #
    ### BEGIN INIT INFO
    # Provides: libvirt-bin libvirtd
    # Required-Start: $network $local_fs $remote_fs $syslog
    # Required-Stop: $local_fs $remote_fs $syslog
    # Should-Start: avahi-daemon cgconfig
    # Should-Stop: avahi-daemon cgconfig
    # Default-Start: 2 3 4 5
    # Default-Stop: 0 1 6
    # Short-Description: libvirt management daemon
    ### END INIT INFO
    PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
    export PATH
    DAEMON=/usr/sbin/libvirtd
    NAME=libvirtd
    DESC="libvirt management daemon"
    cgroups="cpuset cpu cpuacct devices freezer net_cls blkio perf_event"
    ! grep -qs cgroup_enable=memory /proc/cmdline || cgroups="$cgroups memory"
    test -x $DAEMON || exit 0
    . /lib/lsb/init-functions
    PIDFILE=/var/run/$NAME.pid
    DODTIME=1 # Time to wait for the server to die, in seconds
    # Include libvirtd defaults if available
    if [ -f /etc/default/libvirt-bin ] ; then
     . /etc/default/libvirt-bin
    fi
    check_start_libvirtd_option() {
     if [ ! "$start_libvirtd" = "yes" ]; then
    log_warning_msg "Not starting libvirt management daemon libvirtd, disabled via /etc/default/libvirt-bin"
     return 1
     else
     return 0
     fi
    }
    running_pid()
    {
     # Check if a given process pid's cmdline matches a given name
     pid=1ドル
     name=2ドル
     [ -z "$pid" ] && return 1 
     [ ! -d /proc/$pid ] && return 1
     cmd=`cat /proc/$pid/cmdline | tr "000円" "\n"|head -n 1 |cut -d : -f 1`
     # Is this the expected child?
     [ "$cmd" != "$name" ] && return 1
     return 0
    }
    running()
    {
    # Check if the process is running looking at /proc
    # (works for all users)
     # No pidfile, probably no daemon present
     [ ! -f "$PIDFILE" ] && return 1
     # Obtain the pid and check it against the binary name
     pid=`cat $PIDFILE`
     running_pid $pid $DAEMON || return 1
     return 0
    }
    systemd_running()
    {
     if [ -d /run/systemd/system ] ; then
     return 0
     fi
     return 1
    }
    mount_cgroups()
    {
     if ! systemd_running
     then
    mount -t tmpfs cgroup_root /sys/fs/cgroup || return 1
     for M in $cgroups; do
    mkdir /sys/fs/cgroup/$M || return 1
     mount -t cgroup -o rw,nosuid,nodev,noexec,relatime,$M "cgroup_${M}" "/sys/fs/cgroup/${M}" || return 1
     done
     else
    log_warning_msg "Systemd running, skipping cgroup mount."
     fi
    }
    umount_cgroups()
    {
     if ! systemd_running
     then
     for M in $cgroups; do
    umount "cgroup_${M}"
     rmdir /sys/fs/cgroup/$M
     done
    umount cgroup_root
     else
    log_warning_msg "Systemd running, skipping cgroup mount."
     fi
    }
    check_mount_cgroup_options() {
     if [ ! "$mount_cgroups" = "yes" ]; then
     return 1
     else
     return 0
     fi
    }
    force_stop() {
    # Forcefully kill the process
     [ ! -f "$PIDFILE" ] && return
     if running ; then
    kill -15 $pid
     # Is it really dead?
     [ -n "$DODTIME" ] && sleep "$DODTIME"s
     if running ; then
    kill -9 $pid
     [ -n "$DODTIME" ] && sleep "$DODTIME"s
     if running ; then
    echo "Cannot kill $LABEL (pid=$pid)!"
     exit 1
     fi
     fi
     fi
    rm -f $PIDFILE
     return 0
    }
    case "1ドル" in
     start)
     if check_start_libvirtd_option; then
    log_daemon_msg "Starting $DESC" "$NAME"
     if running ; then
    log_progress_msg "already running"
     log_end_msg 0
     exit 0
     fi
    rm -f /var/run/libvirtd.pid
     if check_mount_cgroup_options; then
     if ! mount_cgroups;then
    log_warning_msg "Can not mount cgroups layout"
     exit 1
     fi
     fi
    start-stop-daemon --start --quiet --pidfile $PIDFILE \
     --exec $DAEMON -- -d $libvirtd_opts
     if running; then
    log_end_msg 0
     else
    log_end_msg 1
     fi
     fi
     ;;
     stop)
     log_daemon_msg "Stopping $DESC" "$NAME"
     if ! running ; then
    log_progress_msg "not running"
     log_end_msg 0
     exit 0
     fi
     if check_mount_cgroup_options; then
    umount_cgroups
     fi
    start-stop-daemon --stop --quiet --pidfile $PIDFILE \
     --exec $DAEMON
     log_end_msg 0
     ;;
     force-stop)
     log_daemon_msg "Forcefully stopping $DESC" "$NAME"
     force_stop
     if ! running; then
    log_end_msg 0
     else
    log_end_msg 1
     fi
     ;;
     restart)
     if check_start_libvirtd_option; then
    log_daemon_msg "Restarting $DESC" "$DAEMON"
     start-stop-daemon --oknodo --stop --quiet --pidfile \
     /var/run/$NAME.pid --exec $DAEMON
     [ -n "$DODTIME" ] && sleep $DODTIME
     start-stop-daemon --start --quiet --pidfile \
     /var/run/$NAME.pid --exec $DAEMON -- -d $libvirtd_opts
     if running; then
    log_end_msg 0
     else
    log_end_msg 1
     fi
     fi
     ;;
     reload|force-reload)
     if running; then
    log_daemon_msg "Reloading configuration of $DESC" "$NAME"
     start-stop-daemon --stop --signal 1 --quiet --pidfile \
     /var/run/$NAME.pid --exec $DAEMON
     log_end_msg 0
     else
    log_warning_msg "libvirtd not running, doing nothing."
     fi
     ;;
     status)
     log_daemon_msg "Checking status of $DESC" "$NAME"
     if running ; then
    log_progress_msg "running"
     log_end_msg 0
     else
    log_progress_msg "not running"
     log_end_msg 1
     if [ -f "$PIDFILE" ] ; then
    exit 1
     else
    exit 3
     fi
     fi
     ;;
     *)
     N=/etc/init.d/libvirt-bin
     echo "Usage: $N {start|stop|restart|reload|force-reload|status|force-stop}" >&2
     exit 1
     ;;
    esac
    exit 0

    que

    # NB we don't use socket activation. When libvirtd starts it will
    # spawn any virtual machines registered for autostart. We want this
    # to occur on every boot, regardless of whether any client connects
    # to a socket. Thus socket activation doesn't have any benefit
    [Unit]
    Description=Virtualization daemon
    Before=libvirt-guests.service
    After=network.target
    After=dbus.service
    After=iscsid.service
    Documentation=man:libvirtd(8)
    Documentation=http://libvirt.org
    [Service]
    EnvironmentFile=-/etc/default/libvirt-bin
    ExecStart=/usr/sbin/libvirtd $libvirtd_opts
    ExecReload=/bin/kill -HUP $MAINPID
    KillMode=process
    Restart=on-failure
    # Override the maximum number of opened files
    #LimitNOFILE=2048
    [Install]
    WantedBy=multi-user.target

    Et bien pas moi, si je dois audité un minimum pour éviter d'introduire un truc potentiellement dangereux, je préfère de loin une unité systemd, il y a beaucoup moins de ligne et encore moins de ligne qui peuvent poser problème.

    « Rappelez-vous toujours que si la Gestapo avait les moyens de vous faire parler, les politiciens ont, eux, les moyens de vous faire taire. » Coluche