当我的电脑睡眠时停止进程

当我的电脑睡眠时停止进程

我想在我的电脑睡眠或唤醒之前启动/停止一个进程。

我不知道该怎么做。

命令是:

睡觉前:killall libinput-debug-events
醒来后:libinput-gestures-setup start

答案1

/lib/systemd/system-sleep方法 1 - 使用目录内的脚本

/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服务rootuser

从: (archlinux - 电源管理)我们得到了有关根据root权力或user权力暂停和恢复的详细说明。

暂停/恢复服务文件

可以将服务文件挂接到 suspend.target、hibernate.target 和 sleep.target 中,以在挂起/休眠之前或之后执行操作。应为用户操作和 root/系统操作创建单独的文件。启用 suspend@user 和 resume@user 服务,让它们在启动时启动。示例:

暂停

/etc/systemd/system/[email protected]
[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/[email protected]
[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 

相关内容