Views:
1,260
Votes: 3
✅ Solution
Tag :
suspend
Link:
🔍 See Original Answer on Ask Ubuntu ⧉ 🔗
URL:
https://askubuntu.com/q/851917
Title:
Stop a process when my PC sleeps
ID:
/2016/11/21/Stop-a-process-when-my-PC-sleeps
Created:
November 21, 2016
Edited: November 29, 2017
Upload:
October 19, 2025
Layout: post
TOC:
false
Navigation: false
Copy to clipboard: false
Method 1 - using a script within /lib/systemd/system-sleep directory
Create a script in /lib/systemd/system-sleep that looks like this:
#!/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
To ensure the script is created with the right permissions, copy and existing script and then edit it:
cd /lib/systemd/system-sleep
sudo cp wpasupplicant tv_refresh
gksu gedit tv_refresh
The sleep 2 pause may be unnecessary for you but for my setup it was necessary restoring sound from laptop back to HDMI TV.
The echo lines are optional but are handy because they show up in /var/log/syslog.
Method 2 - using systemd services for root or user
From: (archlinux - Power Management) we get detailed instructions for suspending and resuming either under root powers or user powers.
Suspend/resume service files
Service files can be hooked into suspend.target, hibernate.target and sleep.target to execute actions before or after suspend/hibernate. Separate files should be created for user actions and root/system actions. Enable the suspend@user and resume@user services to have them started at boot. Examples:
Suspend
/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
Resume
/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