Prosíme přihlašte se nebo zaregistrujte.

Přihlašte se svým uživatelským jménem a heslem.
Vaše pomoc je stále potřeba!

Autor Téma: Skript - akce po probuzení ze spánku - vysvětlení.  (Přečteno 1123 krát)

juwa2

  • Závislák
  • ***
  • Příspěvků: 4935
Skript - akce po probuzení ze spánku - vysvětlení.
« kdy: 21 Května 2018, 15:07:06 »
Zdravím.
Zkouším teď nové U 18.04 a potřebuji spouštět určitý skript po probuzení PC ze spánku (resume). Vím, že ve verzích 16.04+ je to jinak než dříve protože systemd.
Ve všech možných návodech které jsem našel, např. tu https://www.addictivetips.com/ubuntu-linux-tips/run-scripts-and-commands-on-suspend-and-resume-on-linux/  je tento postup.  Vytvořit spustitelný soubor
Kód: [Vybrat]
/lib/systemd/system-sleep/post-suspend
s tímto obsahem
Kód: [Vybrat]
#!/bin/sh/
if [ "${1}" == "pre" ]; then
# nothing goes here
elif [ "${1}" == "post" ]; then
sh /path/to/script.sh
fi

Bohužel to nefunguje, ani změna z #!/bin/sh/  na  #!/bin/bash/ nepomohla...
Po prozkoumání ostatních skriptů které ve složce /lib/systemd/system-sleep jsou jsem dospěl k tomuto již funkčnímu skriptu:
Kód: [Vybrat]
#!/bin/sh
set -e
if [ "$2" = "suspend" ]; then
    case "$1" in
    post) /path/to/script.sh ;;
    esac   
fi

Otázka tedy zní:  Proč skript který se uvádí ve všech návodech nefunguje?  Je to proto, že se v 18.04 zase něco změnilo"?
Nebo je chyba jinde, dosti by mě to totiž zajímalo.....

« Poslední změna: 21 Května 2018, 18:00:17 od juwa2 »

GdH

  • Moderátor
  • Závislák
  • ***
  • Příspěvků: 3176
    • GdH-Notes
Re:Skript - akce po probuzení ze spánku - vysvětlení.
« Odpověď #1 kdy: 21 Května 2018, 20:14:47 »
Jestli v tom skriptu za then nic nedáš, tak shell neočekává elif a skončí chybou. Je celkem logické, že když nepotřebuješ zjišťovat stav "pre", tak ho netestuješ. Také je v dashi třeba používat jednoduché rovnítko při porovnávání řetězců, i když bash akceptuje dvojité i v jednoduchých hranatých závorkách. Jinak jsou ty dva skripty identicky nesmyslně komplikované.

juwa2

  • Závislák
  • ***
  • Příspěvků: 4935
Re:Skript - akce po probuzení ze spánku - vysvětlení.
« Odpověď #2 kdy: 21 Května 2018, 20:46:50 »
Tak jsem tedy za then dal ten stejný skript
Kód: [Vybrat]
#!/bin/sh/
if [ "${1}" == "pre" ]; then
sh /path/to/script.sh
elif [ "${1}" == "post" ]; then
sh /path/to/script.sh
fi

Změna veškerá žádná...  :-[
Dále se mi nechce věřit, že by to bylo v toliko návodech na všech těch webech špatně. Proto jsem pojal podezření na nějaké změny v 18.04, protože v diskusích pod návody  si všichni svorně pochvalují jak jim to funguje, ale nikdo výslovně neuvádí že na 18.04.
A k té nesmyslné komplikovanosti.  To si netroufám posoudit, ale jak jsem viděl i spousta ostatních skriptů přímo v instalaci OS je psána takto - ostatně, řešení jsem odtud odkoukal..
Ale třeba bys tedy prosím mohl mě (a tvůrcům Ubuntu) alespoň nastínit lepší (a hlavně funkční) řešení....

GdH

  • Moderátor
  • Závislák
  • ***
  • Příspěvků: 3176
    • GdH-Notes
Re:Skript - akce po probuzení ze spánku - vysvětlení.
« Odpověď #3 kdy: 21 Května 2018, 21:02:19 »
Napsal jsem čtyři věty. Třetí jsi zřejmě přehlédl úplně, druhou nepochopil.

juwa2

  • Závislák
  • ***
  • Příspěvků: 4935
Re:Skript - akce po probuzení ze spánku - vysvětlení.
« Odpověď #4 kdy: 21 Května 2018, 21:18:36 »
No jo, už z toho blbnu....
Kód: [Vybrat]
#!/bin/sh
if [ "${1}" = "post" ]; then
sh /path/to/script.sh
fi

Takže viníkem bylo dvojité rovnítko. Díky.... :)
« Poslední změna: 21 Května 2018, 21:34:37 od juwa2 »

West

  • Aktivní člen
  • *
  • Příspěvků: 404
Re:Skript - akce po probuzení ze spánku - vysvětlení.
« Odpověď #5 kdy: 21 Května 2018, 21:54:43 »
V niektorych pripadoch zrejme vadi porovnavanie dvoma rovnitkami. Tiez som na to narazil pri pisani skriptov. Pri pouziti jedneho rovnitka to fungovalo, pri pouziti dvoch bola podmienka chybne vyhodnotena. Zatial som sa nedokopal k analyzovaniu problemu kedy to funguje a kedy nie. Je mozne, ze to nefunguje len za urcitych podmienok. Napada ma neuvodzovanie argumentov, na obidvoch stanach, ci len na jednej, alebo druhej strane. Moznosti je samozrejme viac.

 

Provoz zaštiťuje spolek OpenAlt.