Kicsit elakadtam… hátha tudtok rá megoldást.
A lényeg, hogy azt akarom elérni, hogy Ubuntu LTS 18.04.2 sleep utáni wake up alkalmával lefusson egy script. Viszont ennek a scriptnek a hálózat feléledése után valamint a képernyő megjelenése után kellene lefutnia. Szóval azt gondoltam, hogy csinálok egy scriptet, amibe berakok egy sleepet és azt hívom meg.
Szóval ezt találtam, hogy ezt kell szerkeszteni (persze a kodirefresh az saját):
/lib/systemd/system-sleep/kodirefresh
Tartalma:
#!/bin/bash
case $1/$2 in
pre/*)
echo "Going to $2..."
# Place your pre suspend commands here, or `exit 0` if no pre suspend action required
exit 0
;;
post/*)
echo "Waking up from $2..."
# Place your post suspend (resume) commands here, or `exit 0` if no post suspend action required
nohup sudo -u idioty /home/idioty/Desktop/kodi_update.sh --sleep &
exit 0
;;
esac
Aztán ez meghívja a kodi_update.sh-t, aminek a tartalma:
#!/bin/bash
cd "$(dirname "$0")"
if [[ "$1" == "--sleep" ]];then
slTime=10
pTime="$2"
if [[ ${pTime} =~ ^-?[0-9]+$ ]];then
slTime=${pTime}
fi
echo "[KODI update] Sleep for ${slTime} second(s)."
sleep ${slTime}
else
echo "[KODI update] No sleep!"
fi
echo "[KODI update] Update begginning"
python KodiHelper/start.py
killall -9 kodi-x11
echo "[KODI update] Update done, Start KODI"
DISPLAY=:0 kodi &
echo "[KODI update] Update exit"
Ami annyit csinál, hogy ha van --sleep érték, akkor vagy 10 vagy ami utána van érték, azzal “sleepeli” a processzt.
Majd lefut a python, ami frissíti a fájlokat, aztán kinyírja a Kodi-t (ha fut) és elindítja újra.
Nost ha ez utóbbit lefuttatom kézzel ssh-n belépve, akkor szépen működik, lefrissül minden és újra is indul a Kodi.
Sőt egyébként alapvetően azt szeretném elérni, hogy indítás után, sleepből felébredés után és éjfél után mindennap fusson le ugyanez a script.
Indítás után és crontabbal éjfél után le is fut és működik is szépen. Viszont a sleepből visszatérés után nem.
Elkezd futni a script, mert megkapom a [KODI update] Sleep for 10 second(s). üzenetet syslogba.
Utána sysloban benne van, hogy leáll a systemd-sleep és ami furcsa, hogy az új script pid-je is ugyanaz, mint a systemd-sleep pidje. (vagyis lehet csak a systemd-sleep process kapja meg a scriptem kimenetét és lehet az írja ki és amiatt látszik azzal a piddel…)
Szóval a logok:
Mar 9 12:05:55 idioty-ZBOX-ID84 systemd-sleep[2666]: System resumed.
Mar 9 12:05:55 idioty-ZBOX-ID84 systemd-sleep[2666]: Waking up from suspend...
...
Mar 9 12:05:59 idioty-ZBOX-ID84 systemd-sleep[2666]: [KODI update] Sleep for 10 second(s).
Mar 9 12:05:59 idioty-ZBOX-ID84 systemd-sleep[2666]: /dev/sda:
Mar 9 12:05:59 idioty-ZBOX-ID84 systemd-sleep[2666]: setting Advanced Power Management level to 0xfe (254)
Mar 9 12:05:59 idioty-ZBOX-ID84 systemd-sleep[2666]: APM_level#011= 254
Mar 9 12:05:59 idioty-ZBOX-ID84 systemd[1]: Started Suspend.
Mar 9 12:05:59 idioty-ZBOX-ID84 systemd[1]: sleep.target: Unit not needed anymore. Stopping.
Mar 9 12:05:59 idioty-ZBOX-ID84 systemd[1]: Stopped target Sleep.
Mar 9 12:05:59 idioty-ZBOX-ID84 systemd[1]: Reached target Suspend.
Mar 9 12:05:59 idioty-ZBOX-ID84 systemd[1]: suspend.target: Unit not needed anymore. Stopping.
Mar 9 12:05:59 idioty-ZBOX-ID84 systemd[1]: Stopped target Suspend.
Persze ha senkinek sincs semmi ötlete, akkor majd inkább írok egy daemont ami annyit fog csinálni, hogy egy változót fog figyelni. Ha az a változó asszondja, hogy frissítés, akkor elindítom a scriptett akkor… És a system-sleep/kodirefresh-ben meg ezt a változót jól megváltoztattatom! :D