/usr/sbin/pmi is in powermanagement-interface 0.3.20ubuntu1.
This file is owned by root:root, with mode 0o755.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 | #!/bin/bash
# This is the ACPI version of the shell version of PMI
# calling convention: pmi <event>
command="$1"
event="$2"
usage () {
echo "Usage: $0 query|action <event>" >&2
echo " $0 capabilities" >&2
exit 254
}
query () {
[ ! -z "$1" ] && event="$1"
case "$event" in
suspend|sleep)
if grep -q ' /host fuse' /proc/mounts; then
# Disallow suspend when we're mounting /
# from a loopback image on a fuse
# filesystem.
result=1
else
pm-is-supported --suspend && result=0 || result=1
fi
;;
hibernate)
if grep -q ' /host fuse' /proc/mounts || \
! swapon -s | tail -n +2 | awk '$2 == "file" { exit 1 }'; then
# Disallow hibernate when we're mounting /
# from a loopback image on a fuse
# filesystem, or when a swap file is active.
result=1
elif [ -f /var/run/do-not-hibernate ]; then
result=1
else
pm-is-supported --hibernate && result=0 || result=1
fi
;;
*)
result=1
echo "No such event found" >&2
;;
esac
}
run () {
case "$event" in
suspend|sleep)
[ -f /var/lock/acpisleep ] && exit 0
dbus-send --system --print-reply --dest=org.freedesktop.Hal /org/freedesktop/Hal/devices/computer org.freedesktop.Hal.Device.SystemPowerManagement.Suspend int32:0
;;
hibernate)
[ -f /var/lock/acpisleep ] && exit 0
[ -f /var/run/do-not-hibernate ] && echo "Default kernel has been upgraded" >&2 && exit 1
dbus-send --system --print-reply --dest=org.freedesktop.Hal /org/freedesktop/Hal/devices/computer org.freedesktop.Hal.Device.SystemPowerManagement.Hibernate
;;
restart)
[ -f /var/lock/acpisleep ] && exit 0
shutdown -r now
;;
shutdown)
[ -f /var/lock/acpisleep ] && exit 0
shutdown -h now
;;
esac
}
capabilities () {
for i in "hibernate" "suspend"; do
query $i
[ $result -eq 0 ] && caps="$caps $i"
done
echo $caps
}
case "$command" in
query)
query $event
exit $result
;;
action)
run $event
;;
capabilities)
capabilities
;;
*)
usage
;;
esac
exit 0
|