Остановите процесс, когда мой ПК будет спать

Я хотел бы запустить/остановить процесс, прежде чем мой ПК будет спать или просыпаться.

Я не знаю, как сделать это.

Команда:

Передо сном: killall libinput-debug-events
После пробуждения: libinput-gestures-setup start

2
задан 21 November 2016 в 15:48

1 ответ

Метод 1 - использование сценария в /lib/systemd/system-sleep каталог

Создайте сценарий в /lib/systemd/system-sleep это похоже на это:

#!/bin/sh

case $1/$2 in
  pre/*)
    echo "Going to $2..."
    killall libinput-debug-events
    ;;
  post/*)
    echo "Waking up from $2..."
    # Place your post suspend (resume) commands here, or `exit 0` if no post suspend action required
    sleep 2
    libinput-gestures-setup start
    ;;
esac

Гарантировать сценарий создается с правильными полномочиями, копией и существующим сценарием, и затем отредактируйте его:

cd /lib/systemd/system-sleep
sudo cp wpasupplicant tv_refresh
gksu gedit tv_refresh

sleep 2 пауза может быть ненужной для Вас, но для моей установки это был необходимый звук восстановления от ноутбука назад к ТВ HDMI.

echo строки являются дополнительными, но являются удобными, потому что они обнаруживаются в /var/log/syslog.

Метод 2 - использование systemd сервисы для root или user

От: (archlinux - Управление питанием), мы получаем подробные инструкции для приостановки и возобновления любого под root полномочия или user полномочия.

Приостановите/возобновите сервисные файлы

Сервисные файлы могут быть сцеплены в suspend.target, hibernate.target и sleep.target для выполнения действий, прежде чем или после будут приостанавливать/быть в спящем режиме. Отдельные файлы должны быть созданы для пользовательских действий и действий корня/системы. Позвольте сервисам suspend@user и resume@user запустить их при начальной загрузке. Примеры:

Приостановить

/etc/systemd/system/suspend@.service
[Unit]
Description=User suspend actions
Before=sleep.target

[Service]
User=%I
Type=simple
Environment=DISPLAY=:0
ExecStartPre= -/usr/bin/pkill -u %u unison ; /usr/local/bin/music.sh stop ; /usr/bin/mysql -e 'slave stop'
ExecStart=/usr/bin/sflock
ExecStartPost=/usr/bin/sleep 1

[Install]
WantedBy=sleep.target

Резюме

/etc/systemd/system/resume@.service
[Unit]
Description=User resume actions
After=suspend.target

[Service]
User=%I
Type=simple
ExecStartPre=/usr/local/bin/ssh-connect.sh
ExecStart=/usr/bin/mysql -e 'slave start'

[Install]
WantedBy=suspend.target 
3
ответ дан 2 December 2019 в 02:49

Другие вопросы по тегам:

Похожие вопросы: