Read the statement by Michael Teeuw here.
ubuntu - run the script before sleeping and after waking up the PC
-
Hello everyone, can I ask for help? I’m sorry, I’m using a translator, I can’t speak English.
I am using the new Ubuntu, where I have Domoticz server and MagicMirror running.
after 15 minutes the PC goes to sleep and then wakes up with PIR (ESP8266).After waking up, it takes a long time for the domoticz server to start working and sending Information to MagicMirror. I don’t want to solve it with service monitor.
I would like to set up a script:
before putting the PC to sleep run “sudo service domoticz.sh stop”
after waking up the PC run “sudo service domoticz.sh start”
it works reliably in the command line, it just needs a password that I enter and it’s ok.I saw somewhere that something like this can be used, but I don’t know exactly where to write, save and that it doesn’t ask for a password. Would someone be willing to write the exact procedure where to write what and save? I found a lot of versions and maybe I got it wrong or the instructions are for older Ubuntu
First of all thank you very much for the joy and newbie to ubuntu.
#!/bin/sh PATH=/sbin:/usr/sbin:/bin:/usr/bin case "$1" in pre) #code execution BEFORE sleeping/hibernating/suspending ;; post) #code execution AFTER resuming ;; esac exit 0
-
@majsoft ok, here is the doc I found
Suggesting to read this manual page:
https://www.man7.org/linux/man-pages/man8/systemd-sleep.8.html
Especially this section:
Immediately before entering system suspend and/or hibernation
systemd-suspend.service (and the other mentioned units, respectively)will run all executables
in /usr/lib/systemd/system-sleep/ and pass two arguments to them.
The first argument will be “pre”,
the second either “suspend”, “hibernate”, “hybrid-sleep”, or “suspend-then-hibernate”depending on the chosen action. An environment variable called “SYSTEMD_SLEEP_ACTION” will be set and contain the sleep action that is processing. This is primarily helpful for “suspend-then-hibernate” where the value of the variable will be “suspend”, “hibernate”, or “suspend-after-failed-hibernate” in cases where hibernation has failed.
Immediately after leaving system suspend and/or hibernation the same executables are run, but the first argument is now “post”.
All executables in this directory are executed in parallel, and execution of the action is not continued until all executables have finished.
so your script should go in that folder… and of course be set with permissions to be executable by root
see the chmod and chgrp commands
the permissions are in three sections
for the current user
for the a group (the user might be in)
for all otherwhen you do ls -laF somefile (i picked a text file)
-rw-rw-r-- 1 sam sam 8087 Oct 26 08:59 somefile.txt
the permissions are
user rw- (rear/write but not executable
group rw- (read/write but not executable)
and all others r-- (read only)
that is 3 bits each +1 so 10 bits of permission
usually represented by a number
in this case 664
7 is all bits on 111
0 is all bits off 000
chmod has shortcuts too chmod +x make executable for all sections
chmod -w makes it not writeble for allso if you want to make a file read/write and executable by bob, read only for anyone in group testers, and NO access for anyone else (other)
740 bob testers
chown and chgrp are used to set the owner and groupin linux most commands have help with the --help parameter chown --help
and most have a manual page with more text
the get the manual page, type
man command_name
like
man chown -
what does this
PC goes to sleep and then wakes up with PIR (ESP8266).
is there a MagicMirror module? or??
whatever does that is where you want to call your script to do the server shutdown and startup
exactly what you do on the console.if this requires sudo authority, you can add your userid to the /etc/sudoers file
to not prompt for your password
(google search) -
I can’t get the script to run itself, there are tutorials everywhere but none of them worked for me. I have to study further.
-
@majsoft ok, here is the doc I found
Suggesting to read this manual page:
https://www.man7.org/linux/man-pages/man8/systemd-sleep.8.html
Especially this section:
Immediately before entering system suspend and/or hibernation
systemd-suspend.service (and the other mentioned units, respectively)will run all executables
in /usr/lib/systemd/system-sleep/ and pass two arguments to them.
The first argument will be “pre”,
the second either “suspend”, “hibernate”, “hybrid-sleep”, or “suspend-then-hibernate”depending on the chosen action. An environment variable called “SYSTEMD_SLEEP_ACTION” will be set and contain the sleep action that is processing. This is primarily helpful for “suspend-then-hibernate” where the value of the variable will be “suspend”, “hibernate”, or “suspend-after-failed-hibernate” in cases where hibernation has failed.
Immediately after leaving system suspend and/or hibernation the same executables are run, but the first argument is now “post”.
All executables in this directory are executed in parallel, and execution of the action is not continued until all executables have finished.
so your script should go in that folder… and of course be set with permissions to be executable by root
see the chmod and chgrp commands
the permissions are in three sections
for the current user
for the a group (the user might be in)
for all otherwhen you do ls -laF somefile (i picked a text file)
-rw-rw-r-- 1 sam sam 8087 Oct 26 08:59 somefile.txt
the permissions are
user rw- (rear/write but not executable
group rw- (read/write but not executable)
and all others r-- (read only)
that is 3 bits each +1 so 10 bits of permission
usually represented by a number
in this case 664
7 is all bits on 111
0 is all bits off 000
chmod has shortcuts too chmod +x make executable for all sections
chmod -w makes it not writeble for allso if you want to make a file read/write and executable by bob, read only for anyone in group testers, and NO access for anyone else (other)
740 bob testers
chown and chgrp are used to set the owner and groupin linux most commands have help with the --help parameter chown --help
and most have a manual page with more text
the get the manual page, type
man command_name
like
man chown -
Hi, thanks for guiding me in the right direction.
I had an error in the placement of the script.Now I have verified that it works.
I will then delete the sleep 60 command and the output to the file, I had time to find out if the necessary services are really turned off.so my solution was as follows:
file creation
sudo nano /usr/lib/systemd/system-sleep/wakeup.sh
the contents of the file
#!/bin/sh case $1/$2 in pre/*) echo "zastavuji domoticz......" service domoticz.sh stop >> /home/meteo/vystup_off.txt sleep 60 ;; post/*) echo "spouštím domoticz......" service domoticz.sh start >> /home/meteo/vystup_on.txt sleep 0 ;; esac
permission settings
sudo chmod a+x /usr/lib/systemd/system-sleep/wakeup.sh
once again thank you very much.
my next goal : Control MM Using systemd/systemctl
PM2 is not working correctly on Ubuntu 24 and I need to have MM as a service.
so far I’m using mm.sh after startup.cd ./MagicMirror DISPLAY=:0 npm start read;
-
@majsoft cool
pm2 on 24, will review
-
-
@majsoft yeh, that one opened by me!
fairly slow w fixes
-