#! /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 INFOPATH=/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 availableif[ -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 namepid=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 namepid=`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/$Mdone
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 ;thenkill -15 $pid# Is it really dead?[ -n "$DODTIME"]&& sleep "$DODTIME"s
if running ;thenkill -9 $pid[ -n "$DODTIME"]&& sleep "$DODTIME"s
if running ;thenecho"Cannot kill $LABEL (pid=$pid)!"exit 1
fi fi fi
rm -f $PIDFILEreturn 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_optsif 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_optsif 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"];thenexit 1
elseexit 3
fi fi;;
*)N=/etc/init.d/libvirt-bin
echo"Usage: $N {start|stop|restart|reload|force-reload|status|force-stop}" >&2
exit 1
;;esacexit 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 daemonBefore=libvirt-guests.serviceAfter=network.targetAfter=dbus.serviceAfter=iscsid.serviceDocumentation=man:libvirtd(8)Documentation=http://libvirt.org[Service]EnvironmentFile=-/etc/default/libvirt-binExecStart=/usr/sbin/libvirtd $libvirtd_optsExecReload=/bin/kill -HUP $MAINPIDKillMode=processRestart=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
[^] # Re: If it works, don't fix it.
Posté par claudex . En réponse au journal Chronique des dinosaures rétrogrades. Évalué à 10.
Tu trouve plus lisible
que
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