X7ROOT File Manager
Current Path:
/usr/libexec
usr
/
libexec
/
📁
..
📄
abrt-action-generate-machine-id
(5.69 KB)
📄
abrt-action-install-debuginfo-to-abrt-cache
(14.98 KB)
📄
abrt-action-ureport
(5.7 KB)
📄
abrt-gdb-exploitable
(27.43 KB)
📄
abrt-handle-event
(15.01 KB)
📄
abrt-hook-ccpp
(31.14 KB)
📄
accounts-daemon
(171.16 KB)
📁
anaconda
📄
anydesk
(11.62 MB)
📄
at-spi-bus-launcher
(23.97 KB)
📄
at-spi2-registryd
(89.33 KB)
📁
awk
📁
bluetooth
📄
boltd
(263.39 KB)
📄
camel-gpg-photo-saver
(11.43 KB)
📄
camel-index-control-1.2
(11.29 KB)
📄
camel-lock-helper-1.2
(15.41 KB)
📄
cc-remote-login-helper
(11.11 KB)
📄
chrony-helper
(6.37 KB)
📁
clufter-0.77.1
📄
colord
(329.13 KB)
📄
colord-session
(57.31 KB)
📄
copy_jdk_configs.lua
(9.37 KB)
📄
copy_jdk_configs_fixFiles.sh
(7.17 KB)
📁
coreutils
📄
cups-pk-helper-mechanism
(123.97 KB)
📁
dbus-1
📄
dconf-service
(83.03 KB)
📄
dleyna-server-service
(11.13 KB)
📁
dovecot
📄
ebtables
(1.66 KB)
📄
empathy-auth-client
(28.01 KB)
📄
empathy-call
(187 KB)
📄
empathy-chat
(104.3 KB)
📄
evinced
(40.96 KB)
📄
evolution-addressbook-factory
(11.41 KB)
📄
evolution-addressbook-factory-subprocess
(15.68 KB)
📄
evolution-calendar-factory
(11.41 KB)
📄
evolution-calendar-factory-subprocess
(15.68 KB)
📁
evolution-data-server
📄
evolution-scan-gconf-tree-xml
(52.88 KB)
📄
evolution-source-registry
(114.1 KB)
📄
evolution-user-prompter
(15.56 KB)
📁
fcoe
📄
fence_kdump_send
(15.2 KB)
📁
file-roller
📄
flatpak-bwrap
(52.53 KB)
📄
flatpak-dbus-proxy
(44.97 KB)
📄
flatpak-portal
(91.18 KB)
📄
flatpak-session-helper
(663.18 KB)
📄
flatpak-system-helper
(675.24 KB)
📄
fprintd
(45.24 KB)
📁
fwupd
📁
fwupdate
📄
gam_server
(90.73 KB)
📁
gcc
📄
gcm-helper-exiv
(19.73 KB)
📄
gconf-defaults-mechanism
(32.64 KB)
📄
gconfd-2
(48.7 KB)
📄
gcr-prompter
(11.4 KB)
📄
gcr-ssh-askpass
(44.38 KB)
📄
gdm-disable-wayland
(11.08 KB)
📄
gdm-host-chooser
(43.77 KB)
📄
gdm-session-worker
(274.13 KB)
📄
gdm-simple-chooser
(47.88 KB)
📄
gdm-wayland-session
(64.63 KB)
📄
gdm-x-session
(80.96 KB)
📁
gedit
📄
generate-rndc-key.sh
(546 B)
📄
geoclue
(269.93 KB)
📁
getconf
📁
git-core
📄
glib-pacrunner
(15.73 KB)
📄
gnome-boxes-search-provider
(128.76 KB)
📄
gnome-calculator-search-provider
(28.14 KB)
📄
gnome-contacts-search-provider
(181.12 KB)
📄
gnome-control-center-search-provider
(49.56 KB)
📄
gnome-initial-setup
(936.95 KB)
📄
gnome-initial-setup-copy-worker
(11.2 KB)
📄
gnome-rr-debug
(11.38 KB)
📄
gnome-session-binary
(291.61 KB)
📄
gnome-session-check-accelerated
(11.33 KB)
📄
gnome-session-check-accelerated-gl-helper
(15.44 KB)
📄
gnome-session-check-accelerated-gles-helper
(11.31 KB)
📄
gnome-session-failed
(19.8 KB)
📄
gnome-shell-calendar-server
(36.76 KB)
📄
gnome-shell-hotplug-sniffer
(28.16 KB)
📄
gnome-shell-perf-helper
(15.76 KB)
📄
gnome-shell-portal-helper
(2.06 MB)
📄
gnome-software-cmd
(261.79 KB)
📄
gnome-software-restarter
(11.18 KB)
📁
gnome-system-monitor
📄
gnome-terminal-migration
(40.66 KB)
📄
gnome-terminal-server
(345.11 KB)
📄
gnome-tweak-tool-lid-inhibitor
(1.51 KB)
📄
gnome-welcome-tour
(440 B)
📄
gnupg-pcsc-wrapper
(19.3 KB)
📄
goa-daemon
(45.23 KB)
📄
goa-identity-service
(141.66 KB)
📄
gom-gdata-miner
(28.18 KB)
📄
gom-owncloud-miner
(19.96 KB)
📄
gom-zpj-miner
(15.66 KB)
📄
gpg-check-pattern
(102.95 KB)
📄
gpg-preset-passphrase
(86.39 KB)
📄
gpg-protect-tool
(185.57 KB)
📄
gpg2keys_curl
(44.81 KB)
📄
gpg2keys_finger
(61.34 KB)
📄
gpg2keys_hkp
(53 KB)
📄
gpg2keys_ldap
(61.02 KB)
📄
grepconf.sh
(253 B)
📁
grubby
📄
gsd-a11y-settings
(15.85 KB)
📄
gsd-account
(99.5 KB)
📄
gsd-backlight-helper
(11.3 KB)
📄
gsd-clipboard
(28.41 KB)
📄
gsd-color
(79.23 KB)
📄
gsd-datetime
(62.84 KB)
📄
gsd-disk-utility-notify
(15.72 KB)
📄
gsd-dummy
(15.87 KB)
📄
gsd-housekeeping
(45.71 KB)
📄
gsd-keyboard
(28.59 KB)
📄
gsd-locate-pointer
(32.41 KB)
📄
gsd-media-keys
(211.83 KB)
📄
gsd-mouse
(20.13 KB)
📄
gsd-power
(91.17 KB)
📄
gsd-print-notifications
(40.91 KB)
📄
gsd-printer
(27.86 KB)
📄
gsd-rfkill
(41.13 KB)
📄
gsd-screensaver-proxy
(24.08 KB)
📄
gsd-sharing
(28.5 KB)
📄
gsd-smartcard
(95.89 KB)
📄
gsd-sound
(20.2 KB)
📄
gsd-wacom
(62.37 KB)
📄
gsd-wacom-led-helper
(11.27 KB)
📄
gsd-wacom-oled-helper
(15.33 KB)
📄
gsd-xsettings
(59.34 KB)
📄
gst-install-plugins-helper
(19.68 KB)
📁
gstreamer-0.10
📁
gstreamer-1.0
📄
gvfs-afc-volume-monitor
(90.86 KB)
📄
gvfs-goa-volume-monitor
(95.33 KB)
📄
gvfs-gphoto2-volume-monitor
(95.09 KB)
📄
gvfs-mtp-volume-monitor
(90.95 KB)
📄
gvfs-udisks2-volume-monitor
(171.29 KB)
📄
gvfsd
(32.57 KB)
📄
gvfsd-admin
(36.86 KB)
📄
gvfsd-afc
(61.3 KB)
📄
gvfsd-afp
(127.95 KB)
📄
gvfsd-afp-browse
(107.2 KB)
📄
gvfsd-archive
(32.65 KB)
📄
gvfsd-burn
(32.46 KB)
📄
gvfsd-cdda
(32.48 KB)
📄
gvfsd-computer
(41.01 KB)
📄
gvfsd-dav
(99.82 KB)
📄
gvfsd-dnssd
(32.58 KB)
📄
gvfsd-ftp
(94.51 KB)
📄
gvfsd-fuse
(41.08 KB)
📄
gvfsd-google
(65.78 KB)
📄
gvfsd-gphoto2
(65.6 KB)
📄
gvfsd-http
(40.98 KB)
📄
gvfsd-localtest
(44.63 KB)
📄
gvfsd-metadata
(78.63 KB)
📄
gvfsd-mtp
(69.56 KB)
📄
gvfsd-network
(32.63 KB)
📄
gvfsd-recent
(32.56 KB)
📄
gvfsd-sftp
(99.01 KB)
📄
gvfsd-smb
(48.93 KB)
📄
gvfsd-smb-browse
(65.65 KB)
📄
gvfsd-trash
(49.48 KB)
📁
heartbeat
📄
httpd-ssl-pass-dialog
(81 B)
📁
hypervkvpd
📄
ibus-dconf
(19.75 KB)
📄
ibus-engine-chewing
(97.91 KB)
📄
ibus-engine-hangul
(32.59 KB)
📄
ibus-engine-kkc
(62.29 KB)
📄
ibus-engine-libpinyin
(204.85 KB)
📄
ibus-engine-m17n
(36.52 KB)
📄
ibus-engine-rawcode
(19.75 KB)
📄
ibus-engine-sayura
(16.55 KB)
📄
ibus-engine-simple
(11.47 KB)
📄
ibus-engine-table
(1.4 KB)
📄
ibus-portal
(78.53 KB)
📄
ibus-setup-hangul
(902 B)
📄
ibus-setup-kkc
(82.04 KB)
📄
ibus-setup-libpinyin
(1.04 KB)
📄
ibus-setup-m17n
(28.23 KB)
📄
ibus-ui-emojier
(103.55 KB)
📄
ibus-ui-gtk3
(278.48 KB)
📄
ibus-x11
(93.1 KB)
📄
imsettings-check
(15.3 KB)
📄
imsettings-daemon
(57.24 KB)
📄
imsettings-functions
(6.71 KB)
📄
imsettings-target-checker.sh
(2.82 KB)
📁
initial-setup
📁
initscripts
📁
ipsec
📄
iscsi-mark-root-nodes
(852 B)
📁
kde4
📄
ksmctl
(7.11 KB)
📁
libinput
📄
libvirt-guests.sh
(15.85 KB)
📄
libvirt_iohelper
(410.68 KB)
📄
libvirt_leaseshelper
(414.67 KB)
📄
libvirt_parthelper
(414.67 KB)
📁
linux-boot-probes
📁
lm_sensors
📁
lsm.d
📁
man-db
📄
mariadb-prepare-db-dir
(6.02 KB)
📄
mariadb-wait-ready
(1.71 KB)
📄
mbim-proxy
(15.21 KB)
📁
microcode_ctl
📄
mission-control-5
(374.55 KB)
📄
mlx4-setup.sh
(2.48 KB)
📄
mutter-restart-helper
(11.08 KB)
📄
mysqld
(13.64 MB)
📄
netcf-transaction.sh
(7.21 KB)
📄
newns
(7.03 KB)
📄
nm-dhcp-helper
(15.12 KB)
📄
nm-dispatcher
(47.7 KB)
📄
nm-iface-helper
(839.36 KB)
📄
nm-ifdown
(155 B)
📄
nm-ifup
(153 B)
📄
nm-libreswan-auth-dialog
(19.7 KB)
📄
nm-libreswan-service
(70.81 KB)
📄
nm-libreswan-service-helper
(36.78 KB)
📄
ntpdate-wrapper
(806 B)
📁
oddjob
📄
openipmi-helper
(12.54 KB)
📁
openldap
📁
openssh
📁
os-probes
📁
p11-kit
📁
p7zip
📁
pacemaker
📄
packagekit-direct
(99.72 KB)
📄
packagekitd
(293.48 KB)
📄
pk-command-not-found
(40.55 KB)
📄
pk-gstreamer-install
(19.68 KB)
📄
pk-offline-update
(32.16 KB)
📄
platform-python
(6.98 KB)
📁
plymouth
📁
postfix
📁
proftpd
📁
psacct
📁
pulse
📄
qemu-bridge-helper
(15 KB)
📄
qemu-kvm
(5.02 MB)
📄
qmi-proxy
(11.24 KB)
📄
rdma-init-kernel
(5.59 KB)
📄
rdma-set-sriov-vf
(3.05 KB)
📄
rtkit-daemon
(59.64 KB)
📁
selinux
📄
setup-named-chroot.sh
(2.63 KB)
📁
smartmontools
📁
spice-gtk-x86_64
📁
sudo
📄
sushi-start
(15.5 KB)
📁
systemtap
📄
telepathy-gabble
(1 MB)
📄
telepathy-haze
(199.66 KB)
📄
telepathy-logger
(11.27 KB)
📄
telepathy-salut
(583.88 KB)
📄
totem-gallery-thumbnailer
(32.24 KB)
📄
tracker-extract
(91.48 KB)
📄
tracker-miner-apps
(32.4 KB)
📄
tracker-miner-fs
(127.7 KB)
📄
tracker-miner-user-guides
(28.46 KB)
📄
tracker-store
(139.55 KB)
📄
tracker-writeback
(41.11 KB)
📄
truescale-serdes.cmds
(8.5 KB)
📁
tuned
📁
udisks2
📄
upowerd
(247.37 KB)
📄
urlgrabber-ext-down
(2.54 KB)
📁
usermin
📁
utempter
📄
vino-server
(281.09 KB)
📄
virt-what-cpuid-helper
(7.02 KB)
📁
virtuoso
📁
webkit2gtk-4.0
📁
webkitgtk3
📁
webmin
📄
xdg-desktop-portal
(557.36 KB)
📄
xdg-desktop-portal-gtk
(567.41 KB)
📄
xdg-document-portal
(174.6 KB)
📄
xdg-permission-store
(95.98 KB)
📄
xf86-video-intel-backlight-helper
(7.13 KB)
📄
xinputinfo.sh
(3.74 KB)
Editing: libvirt-guests.sh
#!/bin/sh # Copyright (C) 2011-2014 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library. If not, see # <http://www.gnu.org/licenses/>. sysconfdir="/etc" localstatedir="/var" libvirtd="/usr/sbin"/libvirtd # Source function library. test ! -r "$sysconfdir"/rc.d/init.d/functions || . "$sysconfdir"/rc.d/init.d/functions # Source gettext library. # Make sure this file is recognized as having translations: _("dummy") . "/usr/bin"/gettext.sh export TEXTDOMAIN="libvirt" TEXTDOMAINDIR="/usr/share/locale" URIS=default ON_BOOT=start ON_SHUTDOWN=suspend SHUTDOWN_TIMEOUT=300 PARALLEL_SHUTDOWN=0 START_DELAY=0 BYPASS_CACHE=0 CONNECT_RETRIES=10 RETRIES_SLEEP=1 SYNC_TIME=0 test -f "$sysconfdir"/sysconfig/libvirt-guests && . "$sysconfdir"/sysconfig/libvirt-guests LISTFILE="$localstatedir"/lib/libvirt/libvirt-guests VAR_SUBSYS_LIBVIRT_GUESTS="$localstatedir"/lock/subsys/libvirt-guests RETVAL=0 # retval COMMAND ARGUMENTS... # run command with arguments and convert non-zero return value to 1 and set # the global return variable retval() { "$@" if [ $? -ne 0 ]; then RETVAL=1 return 1 else return 0 fi } # run_virsh URI ARGUMENTS... # start virsh and let it execute ARGUMENTS on URI # If URI is "default" virsh is called without the "-c" argument # (using libvirt's default connection) run_virsh() { uri=$1 shift if [ "x$uri" = xdefault ]; then virsh "$@" </dev/null else virsh -c "$uri" "$@" </dev/null fi } # run_virsh_c URI ARGUMENTS # Same as "run_virsh" but the "C" locale is used instead of # the system's locale. run_virsh_c() { ( export LC_ALL=C; run_virsh "$@" ) } # test_connect URI # check if URI is reachable test_connect() { uri=$1 i=${CONNECT_RETRIES} while [ $i -gt 0 ]; do run_virsh "$uri" connect 2>/dev/null if [ $? -eq 0 ]; then return 0; fi sleep ${RETRIES_SLEEP} eval_gettext "Unable to connect to libvirt currently. Retrying .. \$i" i=$(($i-1)) done eval_gettext "Can't connect to \$uri. Skipping." echo return 1 } # list_guests URI PERSISTENT # List running guests on URI. # PERSISTENT argument options: # --persistent: list only persistent guests # --transient: list only transient guests # [none]: list both persistent and transient guests list_guests() { uri=$1 persistent=$2 list=$(run_virsh_c "$uri" list --uuid $persistent) if [ $? -ne 0 ]; then RETVAL=1 return 1 fi echo "$list" | sed "/00000000-0000-0000-0000-000000000000/d" } # guest_name URI UUID # return name of guest UUID on URI guest_name() { uri=$1 uuid=$2 run_virsh "$uri" domname "$uuid" 2>/dev/null } # guest_is_on URI UUID # check if guest UUID on URI is running # Result is returned by variable "guest_running" guest_is_on() { uri=$1 uuid=$2 guest_running=false id=$(run_virsh "$uri" domid "$uuid") if [ $? -ne 0 ]; then RETVAL=1 return 1 fi [ -n "$id" ] && [ "x$id" != x- ] && guest_running=true return 0 } # started # Create the startup lock file started() { touch "$VAR_SUBSYS_LIBVIRT_GUESTS" } # start # Start or resume the guests start() { [ -f "$LISTFILE" ] || { started; return 0; } if [ "x$ON_BOOT" != xstart ]; then gettext "libvirt-guests is configured not to start any guests on boot" echo rm -f "$LISTFILE" started return 0 fi isfirst=true bypass= sync_time=false test "x$BYPASS_CACHE" = x0 || bypass=--bypass-cache test "x$SYNC_TIME" = x0 || sync_time=true while read uri list; do configured=false set -f for confuri in $URIS; do set +f if [ "x$confuri" = "x$uri" ]; then configured=true break fi done set +f if ! "$configured"; then eval_gettext "Ignoring guests on \$uri URI"; echo continue fi test_connect "$uri" || continue eval_gettext "Resuming guests on \$uri URI..."; echo for guest in $list; do name=$(guest_name "$uri" "$guest") eval_gettext "Resuming guest \$name: " if guest_is_on "$uri" "$guest"; then if "$guest_running"; then gettext "already active"; echo else if "$isfirst"; then isfirst=false else sleep $START_DELAY fi retval run_virsh "$uri" start $bypass "$name" \ >/dev/null && \ gettext "done"; echo if "$sync_time"; then run_virsh "$uri" domtime --sync "$name" >/dev/null fi fi fi done done <"$LISTFILE" rm -f "$LISTFILE" started } # suspend_guest URI GUEST # Do a managed save on a GUEST on URI. This function returns after the guest # was saved. suspend_guest() { uri=$1 guest=$2 name=$(guest_name "$uri" "$guest") label=$(eval_gettext "Suspending \$name: ") bypass= slept=0 test "x$BYPASS_CACHE" = x0 || bypass=--bypass-cache printf '%s...\n' "$label" run_virsh "$uri" managedsave $bypass "$guest" >/dev/null & virsh_pid=$! while true; do sleep 1 kill -0 "$virsh_pid" >/dev/null 2>&1 || break slept=$(($slept + 1)) if [ $(($slept % 5)) -eq 0 ]; then progress=$(run_virsh_c "$uri" domjobinfo "$guest" 2>/dev/null | \ awk '/^Data processed:/{print $3, $4}') if [ -n "$progress" ]; then printf '%s%s\n' "$label" "$progress" else printf '%s%s\n' "$label" "..." fi fi done retval wait "$virsh_pid" && printf '%s%s\n' "$label" "$(gettext "done")" } # shutdown_guest URI GUEST # Start an ACPI shutdown of GUEST on URI. This function returns after the guest # was successfully shutdown or the timeout defined by $SHUTDOWN_TIMEOUT expired. shutdown_guest() { uri=$1 guest=$2 name=$(guest_name "$uri" "$guest") eval_gettext "Starting shutdown on guest: \$name" echo retval run_virsh "$uri" shutdown "$guest" >/dev/null || return timeout=$SHUTDOWN_TIMEOUT check_timeout=false if [ $timeout -gt 0 ]; then check_timeout=true format=$(eval_gettext "Waiting for guest %s to shut down, %d seconds left\n") else slept=0 format=$(eval_gettext "Waiting for guest %s to shut down\n") fi while ! $check_timeout || [ "$timeout" -gt 0 ]; do sleep 1 guest_is_on "$uri" "$guest" || return "$guest_running" || break if $check_timeout; then if [ $(($timeout % 5)) -eq 0 ]; then printf "$format" "$name" "$timeout" fi timeout=$(($timeout - 1)) else slept=$(($slept + 1)) if [ $(($slept % 5)) -eq 0 ]; then printf "$format" "$name" fi fi done if guest_is_on "$uri" "$guest"; then if "$guest_running"; then eval_gettext "Shutdown of guest \$name failed to complete in time." else eval_gettext "Shutdown of guest \$name complete." fi echo fi } # shutdown_guest_async URI GUEST # Start a ACPI shutdown of GUEST on URI. This function returns after the command # was issued to libvirt to allow parallel shutdown. shutdown_guest_async() { uri=$1 guest=$2 name=$(guest_name "$uri" "$guest") eval_gettext "Starting shutdown on guest: \$name" echo retval run_virsh "$uri" shutdown "$guest" > /dev/null } # guest_count GUEST_LIST # Returns number of guests in GUEST_LIST guest_count() { set -- $1 echo $# } # check_guests_shutdown URI GUESTS # check if shutdown is complete on guests in "GUESTS" and returns only # guests that are still shutting down # Result is returned in "guests_shutting_down" check_guests_shutdown() { uri=$1 guests_to_check=$2 guests_shutting_down= for guest in $guests_to_check; do if ! guest_is_on "$uri" "$guest" >/dev/null 2>&1; then eval_gettext "Failed to determine state of guest: \$guest. Not tracking it anymore." echo continue fi if "$guest_running"; then guests_shutting_down="$guests_shutting_down $guest" fi done } # print_guests_shutdown URI BEFORE AFTER # Checks for differences in the lists BEFORE and AFTER and prints # a shutdown complete notice for guests that have finished print_guests_shutdown() { uri=$1 before=$2 after=$3 for guest in $before; do case " $after " in *" $guest "*) continue;; esac name=$(guest_name "$uri" "$guest") if [ -n "$name" ]; then eval_gettext "Shutdown of guest \$name complete." echo fi done } # shutdown_guests_parallel URI GUESTS # Shutdown guests GUESTS on machine URI in parallel shutdown_guests_parallel() { uri=$1 guests=$2 on_shutdown= check_timeout=false timeout=$SHUTDOWN_TIMEOUT if [ $timeout -gt 0 ]; then check_timeout=true format=$(eval_gettext "Waiting for %d guests to shut down, %d seconds left\n") else slept=0 format=$(eval_gettext "Waiting for %d guests to shut down\n") fi while [ -n "$on_shutdown" ] || [ -n "$guests" ]; do while [ -n "$guests" ] && [ $(guest_count "$on_shutdown") -lt "$PARALLEL_SHUTDOWN" ]; do set -- $guests guest=$1 shift guests=$* if [ -z "$(echo $on_shutdown | grep $guest)" ] && [ -n "$(guest_name "$uri" "$guest")" ]; then shutdown_guest_async "$uri" "$guest" on_shutdown="$on_shutdown $guest" fi done sleep 1 set -- $guests guestcount=$# set -- $on_shutdown shutdowncount=$# if $check_timeout; then if [ $(($timeout % 5)) -eq 0 ]; then printf "$format" $(($guestcount + $shutdowncount)) "$timeout" fi timeout=$(($timeout - 1)) if [ $timeout -le 0 ]; then eval_gettext "Timeout expired while shutting down domains"; echo RETVAL=1 return fi else slept=$(($slept + 1)) if [ $(($slept % 5)) -eq 0 ]; then printf "$format" $(($guestcount + $shutdowncount)) fi fi on_shutdown_prev=$on_shutdown check_guests_shutdown "$uri" "$on_shutdown" on_shutdown="$guests_shutting_down" print_guests_shutdown "$uri" "$on_shutdown_prev" "$on_shutdown" done } # stop # Shutdown or save guests on the configured uris stop() { # last stop was not followed by start [ -f "$LISTFILE" ] && return 0 suspending=true if [ "x$ON_SHUTDOWN" = xshutdown ]; then suspending=false if [ $SHUTDOWN_TIMEOUT -lt 0 ]; then gettext "SHUTDOWN_TIMEOUT must be equal or greater than 0" echo RETVAL=6 return fi fi : >"$LISTFILE" set -f for uri in $URIS; do set +f test_connect "$uri" || continue eval_gettext "Running guests on \$uri URI: " list=$(list_guests "$uri") if [ $? -eq 0 ]; then empty=true for uuid in $list; do "$empty" || printf ", " printf %s "$(guest_name "$uri" "$uuid")" empty=false done if "$empty"; then gettext "no running guests." fi echo fi if "$suspending"; then transient=$(list_guests "$uri" "--transient") if [ $? -eq 0 ]; then empty=true for uuid in $transient; do if "$empty"; then eval_gettext "Not suspending transient guests on URI: \$uri: " empty=false else printf ", " fi printf %s "$(guest_name "$uri" "$uuid")" done echo # reload domain list to contain only persistent guests list=$(list_guests "$uri" "--persistent") if [ $? -ne 0 ]; then eval_gettext "Failed to list persistent guests on \$uri" echo RETVAL=1 set +f return fi else gettext "Failed to list transient guests" echo RETVAL=1 set +f return fi fi if [ -n "$list" ]; then echo "$uri" $list >>"$LISTFILE" fi done set +f if [ -s "$LISTFILE" ]; then while read uri list; do if "$suspending"; then eval_gettext "Suspending guests on \$uri URI..."; echo else eval_gettext "Shutting down guests on \$uri URI..."; echo fi if [ "$PARALLEL_SHUTDOWN" -gt 1 ] && ! "$suspending"; then shutdown_guests_parallel "$uri" "$list" else for guest in $list; do if "$suspending"; then suspend_guest "$uri" "$guest" else shutdown_guest "$uri" "$guest" fi done fi done <"$LISTFILE" else rm -f "$LISTFILE" fi rm -f "$VAR_SUBSYS_LIBVIRT_GUESTS" } # gueststatus # List status of guests gueststatus() { set -f for uri in $URIS; do set +f echo "* $uri URI:" retval run_virsh "$uri" list | grep -v "Domain-0" || echo done set +f } # rh_status # Display current status: whether saved state exists, and whether start # has been executed. We cannot use status() from the functions library, # since there is no external daemon process matching this init script. rh_status() { if [ -f "$LISTFILE" ]; then gettext "stopped, with saved guests"; echo RETVAL=3 else if [ -f "$VAR_SUBSYS_LIBVIRT_GUESTS" ]; then gettext "started"; echo RETVAL=0 else gettext "stopped, with no saved guests"; echo RETVAL=3 fi fi } # usage [val] # Display usage string, then exit with VAL (defaults to 2). usage() { program_name=$0 eval_gettext "Usage: \$program_name {start|stop|status|restart|"\ "condrestart|try-restart|reload|force-reload|gueststatus|shutdown}"; echo exit ${1-2} } # See how we were called. if test $# != 1; then usage fi case "$1" in --help) usage 0 ;; start|stop|gueststatus) "$1" ;; restart) stop && start ;; condrestart|try-restart) [ -f "$VAR_SUBSYS_LIBVIRT_GUESTS" ] && stop && start ;; reload|force-reload) # Nothing to do; we reread configuration on each invocation ;; status) rh_status ;; shutdown) ON_SHUTDOWN=shutdown stop ;; *) usage ;; esac exit $RETVAL
Upload File
Create Folder