Каналы, созданные экраном, только доступны владельцем, поэтому это не должно быть проблемой безопасности.
Философия Unix должна иметь инструменты, которые выполняют одно задание плюс оболочка для объединения их. Таким образом, мы объединим приостановить команду с командой do-something-later. Я не знаю то, что стандартная команда для приостановки находится на Fedora (существует несколько плавания вокруг); я буду использовать pm-suspend
который является обычной командой на Ubuntu.
Приостановить после X секунд: sleep X && pm-suspend
Приостановить в установленный срок: echo pm-suspend | at HH:MM
pm-suspend
утилита (который содержится в пополудни-utils пакет и вероятно уже установлен на Вашей машине) - то, что используется для отправки компьютера в режим приостановки. Таким образом для приостановки "прямо сейчас" можно работать (как корень или использующий sudo):
# pm-suspend
К сожалению, пополудни - приостанавливают, не берет параметр времени насколько я знаю. Однако Вы могли записать сценарий обертки, который взял параметр времени. Сохраните сценарий где-нибудь в Вашем $PATH и chmod +x это. Не звоните это "приостанавливает". Простой может быть похожим на это:
#!/bin/sh
#change this following line to wherever pm-suspend lives
suspend="/usr/sbin/pm-suspend"
#make sure we are root
if [ "$(id -u)" != "0" ]; then
echo "This script must be run as root" 1>&2
exit 1
fi
if [ -z "$1" ]; then
echo "mysuspend: time in seconds expected"
exit 1;
elif [ "$1" = "now" ]; then
echo "Suspending now!"
wait="0"
else
#make sure we get a number.
echo "$1" | grep [a-zA-Z] > /dev/null
if [ $? -ne 0 ]; then
echo "Suspending in $1 seconds"
wait="$1"
else
echo "mysuspend: time in seconds expected"
exit 1
fi
fi
sleep "$wait"
$suspend
Предупреждение: Я не протестировал это вне "работ для меня".
Можно рассмотреть изменение приостановить команды к pm-suspend-hybrid, который также сохранит файл спящего режима в случае, если у Вас заканчивается питание, в то время как приостановлено.
Другие утилиты, что можно интересоваться или это могло сделать сценарий более устойчивым, пополудни - в спящем режиме, pm-is-supported.
Если у вас нет под рукой команды приостановки pm -и вы взяли 20:30
в качестве примера:(Замените ее на, когда вы хотите приостановить (или проснуться ), например. tomorrow 1:00
также подойдет)
sleep $(($(date --date "20:30" +%s) - $(date +%s)))
&& эхо-память > /sys/power/state
Кроме того, вы также можете сказать машине, когда проснуться:
rtcwake -m mem -s $(($(date --date "20:30" +%s) - $(date +%s)))
Иногда это не работает, так что это работает лучше:
while sleep 1; do rtcwake -m mem -s $(($(date --date "20:30" +%s) - $(date +%s))) && break; done
Чтобы перейти в режим гибернации, просто используйте disk
вместо mem
в любой из этих команд. Эти команды будут работать на bash. В более примитивной оболочке просто используйте``
(обратные кавычки )вместо $( )
и поместите $
перед $(( ))
.