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

Přihlašte se svým uživatelským jménem a heslem.

Autor Téma: skript pro vypnutí PC - v Conky nebo jinak ?  (Přečteno 2961 krát)

panRajce

  • Návštěvník
  • *
  • Příspěvků: 52
  • Karma: +0/-0
    • Zobrazit profil
skript pro vypnutí PC - v Conky nebo jinak ?
« kdy: 26 Červen 2019, 09:08:47 »
Ahoj,
snažím se najít, jestli pro Conky (nebo samostatně) existuje skript, který umožní při určité události vypnout PC?

Přesněji potřebuji
- při sledování hodnoty nvidia-settings - GPU Utilization bude nižší jak 10% po dobu např. 60sec, pak vypnout počítač

juwa2

  • Závislák
  • ****
  • Příspěvků: 2819
  • Karma: +203/-38
    • Zobrazit profil
Re:skript pro vypnutí PC - v Conky nebo jinak ?
« Odpověď #1 kdy: 26 Červen 2019, 09:25:37 »
Ahoj,
snažím se najít, jestli pro Conky (nebo samostatně) existuje skript, který umožní při určité události vypnout PC?

Přesněji potřebuji
- při sledování hodnoty nvidia-settings - GPU Utilization bude nižší jak 10% po dobu např. 60sec, pak vypnout počítač

Tak si ho prostě napiš. Budeš ho ale muset spouštět pravidelně v určitém intervalu (cronem).

panRajce

  • Návštěvník
  • *
  • Příspěvků: 52
  • Karma: +0/-0
    • Zobrazit profil
Re:skript pro vypnutí PC - v Conky nebo jinak ?
« Odpověď #2 kdy: 26 Červen 2019, 11:48:42 »
Tak si ho prostě napiš.

Kdybych to uměl, tak bych se neptal :)

Budeš ho ale muset spouštět pravidelně v určitém intervalu (cronem).

právě proto jsem doufal, že by něco šlo přímo do Conky, které už v nějakém intervalu má sledování prostředků a vím že do něj lze vnořit LUA skript. Ale co se týče skriptování, tak nevím ani zbla  ;D
« Poslední změna: 26 Červen 2019, 12:39:12 od panRajce »

juwa2

  • Závislák
  • ****
  • Příspěvků: 2819
  • Karma: +203/-38
    • Zobrazit profil
Re:skript pro vypnutí PC - v Conky nebo jinak ?
« Odpověď #3 kdy: 26 Červen 2019, 12:38:50 »
Nauč se to, určitě se ti to bude hodit http://tldp.org/LDP/Bash-Beginners-Guide/html/

panRajce

  • Návštěvník
  • *
  • Příspěvků: 52
  • Karma: +0/-0
    • Zobrazit profil
Re:skript pro vypnutí PC - v Conky nebo jinak ?
« Odpověď #4 kdy: 26 Červen 2019, 12:45:45 »
Nauč se to, určitě se ti to bude hodit http://tldp.org/LDP/Bash-Beginners-Guide/html/

Toť otázka ... mne živí jiné odvětví (3D CGI) a Ubuntu si oťukávám v rámci jednoho firemního PC (nVidia GPU Renderfarma), obávám se, že kromě daného tématu je pro mne LUA nepoužitelná.

juwa2

  • Závislák
  • ****
  • Příspěvků: 2819
  • Karma: +203/-38
    • Zobrazit profil
Re:skript pro vypnutí PC - v Conky nebo jinak ?
« Odpověď #5 kdy: 26 Červen 2019, 13:10:27 »
Kód: [Vybrat]
#!/bin/bash
GPU=$(zde_bude_příkaz_kterým_conky_zjišťuje_tu_hodnotu)
if [[ ${GPU} -le 10 ]]; then
    dbus-send --system --print-reply --dest=org.freedesktop.login1 /org/freedesktop/login1 org.freedesktop.login1.Manager.PowerOff boolean:false
fi

Zbytek už je na tobě...

panRajce

  • Návštěvník
  • *
  • Příspěvků: 52
  • Karma: +0/-0
    • Zobrazit profil
Re:skript pro vypnutí PC - v Conky nebo jinak ?
« Odpověď #6 kdy: 26 Červen 2019, 13:43:14 »
Zbytek už je na tobě...

Díky

... jen nechci moc rýpat, oceňuji pomoc ... ale chápu-li to správně tak tohle by mělo zajistit vypnutí PC pokud GPU je pod 10% ... ale nevidím tam nic pro prodlevu .... takže by došlo vlastně k vypnutí PC OKAMŽITĚ, když nebude zatížená GPU ????

juwa2

  • Závislák
  • ****
  • Příspěvků: 2819
  • Karma: +203/-38
    • Zobrazit profil
Re:skript pro vypnutí PC - v Conky nebo jinak ?
« Odpověď #7 kdy: 26 Červen 2019, 14:18:34 »
Ten skript budeš spouštět např. každých 5 minut. Pokud bude v tom okamžiku GPU pod 10%, PC se vypne - ihned.
V intervalu těch pěti minut může být GPU libovolný - nestane se nic.
A ten loop lze ještě zdvojit - to značí, že třeba po minutě se "test" zopakuje, a PC se vypne pouze pokud i při tomto druhém "testu" je GPU pod 10%.
« Poslední změna: 26 Červen 2019, 20:22:58 od juwa2 »

panRajce

  • Návštěvník
  • *
  • Příspěvků: 52
  • Karma: +0/-0
    • Zobrazit profil
Re:skript pro vypnutí PC - v Conky nebo jinak ?
« Odpověď #8 kdy: 01 Červenec 2019, 15:22:59 »
Ten skript budeš spouštět např. každých 5 minut.
a na to bude asi dobrej Cron ... co jsem tak hledal na netu :)
Dvojité ověření je také dobré.
A pravda, že tohle řešení mi nebude vypínat PC když budu na Ubuntu něco testovat a nepojedou vNidie  8) Prostě si nespustím tenhle proces.
Jan pak ještě naučit i kolegy, když budou renderovat, aby proces spustili a mašina neběžela celý víkend na prázdno.

Petr Merlin Vaněček

  • Moderátor
  • Závislák
  • ***
  • Příspěvků: 4990
  • Karma: +353/-11
    • Zobrazit profil
    • Lomítkáři
Re:skript pro vypnutí PC - v Conky nebo jinak ?
« Odpověď #9 kdy: 01 Červenec 2019, 17:54:05 »
@juwa2 :-)
Kód: [Vybrat]
poweroff
Registered Linux user #421281
Stiskni CTRL + W ...
80% mozku tvoří kapalina ... u některých brzdová

juwa2

  • Závislák
  • ****
  • Příspěvků: 2819
  • Karma: +203/-38
    • Zobrazit profil
Re:skript pro vypnutí PC - v Conky nebo jinak ?
« Odpověď #10 kdy: 01 Červenec 2019, 18:54:39 »
@juwa2 :-)
Kód: [Vybrat]
poweroff

Jasně, zapomněl jsem, že poweroff nevyžaduje "sudo"..... :)

panRajce

  • Návštěvník
  • *
  • Příspěvků: 52
  • Karma: +0/-0
    • Zobrazit profil
Re:skript pro vypnutí PC - v Conky nebo jinak ?
« Odpověď #11 kdy: 08 Červenec 2019, 12:50:47 »
Prosím o pomoc, jak tedy nastavit Crontab pro spuštění úlohy s vícenásobným ověřením?
Mým záměrem je tedy použít script výše uvedený pro vypnutí počítače, pokud GPU není dostatečně zatížená.
Ale rád bych tak učinil po několika ověřeních.

Řekněme takto:
- cronetab každých pět minut scriptem zkontroluje zatížení GPU
- pokud zatížení bude pod 10% (pravda), počká dalších 5 minut, znovu zkontroluje zatížení
- pokud zatížení bude pod 10% (pravda), počká dalších 5 minut, znovu zkontroluje zatížení
- pokud zatížení bude i potřetí zatížení pod 10% (pravda) dojde k vypnutí počítače (poweroff)

Takže pokud karta nebude pracovat, po 10 minutách dojde k vypnutí počítače, pokud v tomto intervalu bude zatížení větší jak 10% začne sledování od začátku.

juwa2

  • Závislák
  • ****
  • Příspěvků: 2819
  • Karma: +203/-38
    • Zobrazit profil
Re:skript pro vypnutí PC - v Conky nebo jinak ?
« Odpověď #12 kdy: 08 Červenec 2019, 13:12:35 »
V tom případě stačí ten skript spouštět pouze každých 16 min (cronem).
Kód: [Vybrat]
*/16 * * * * /cesta/ke/skript
A tu několikanásobnou "kontrolu" po 5ti minutách ošetříš v tom skriptu.
To pětiminutové "čekání" zařídíš řádkem
Kód: [Vybrat]
sleep 300(5min=300s)

A pak tam napíšeš ten příkaz pro kontrolu znova, dáš zase 5min pauzu a napíšeš příkaz potřetí, tentokrát s "výstupem" na to vypnutí (poweroff).
« Poslední změna: 08 Červenec 2019, 13:16:16 od juwa2 »

West

  • Člen
  • **
  • Příspěvků: 137
  • Karma: +9/-1
    • Zobrazit profil
Re:skript pro vypnutí PC - v Conky nebo jinak ?
« Odpověď #13 kdy: 08 Červenec 2019, 17:28:07 »
Uvedené riešenie od juwa2 nieje špatné, je jednoduché a môže aj vyhovieť, ale ja by som to riešil trocha inak. Skriptom by som počítal priemernú hodnotu s najnižšou periódou aká sa dá dosiahnuť cez cron a až od tejto hodnoty by som nastavil závislosť na nejakej akcii, napríklad poweroff.
To preto, lebo hodnoty tých čítačov predstavujú okamžité hodnoty a pri nich je možné sa pri odpočte trafiť na minimálne hodnoty aj keď hardware pracuje naplno. Práve preto si prišiel na to, že potrebuješ viac krát za sebou spúšťať skript aby ti vypol počítač.

panRajce

  • Návštěvník
  • *
  • Příspěvků: 52
  • Karma: +0/-0
    • Zobrazit profil
Re:skript pro vypnutí PC - v Conky nebo jinak ?
« Odpověď #14 kdy: 09 Červenec 2019, 22:01:30 »
tak jsem rozběhl Cron a script

ještě ale než se pusím do samotného vypínání, chtěl jsem si úspěšnost scriptu otestovat zápisem do souboru
ale nefunguje to podle mých představ .... do souboru se zapíše jen prázdný řádek, bez hodnoty
spustím-li ale script z terminálu, tak se hodnota zapíše
co je špatně ???
Kód: [Vybrat]
#!/bin/bash
GPU=$(exec nvidia-settings -tq [gpu:0]/GPUCoreTemp)
echo "${GPU} GPU Temp" >> /home/uzivatel/Install/Octane/Crontab/backup_tmp.log

juwa2

  • Závislák
  • ****
  • Příspěvků: 2819
  • Karma: +203/-38
    • Zobrazit profil
Re:skript pro vypnutí PC - v Conky nebo jinak ?
« Odpověď #15 kdy: 09 Červenec 2019, 22:24:27 »
tak jsem rozběhl Cron a script

ještě ale než se pusím do samotného vypínání, chtěl jsem si úspěšnost scriptu otestovat zápisem do souboru
ale nefunguje to podle mých představ .... do souboru se zapíše jen prázdný řádek, bez hodnoty
spustím-li ale script z terminálu, tak se hodnota zapíše
co je špatně ???
Kód: [Vybrat]
#!/bin/bash
GPU=$(exec nvidia-settings -tq [gpu:0]/GPUCoreTemp)
echo "${GPU} GPU Temp" >> /home/uzivatel/Install/Octane/Crontab/backup_tmp.log

Takto:
Kód: [Vybrat]
#!/bin/bash
GPU=$(exec nvidia-settings -tq [gpu:0]/GPUCoreTemp)
echo $GPU >> $HOME/Install/Octane/Crontab/backup_tmp.log

nebo
Kód: [Vybrat]
#!/bin/bash
exec nvidia-settings -tq [gpu:0]/GPUCoreTemp >> $HOME/Install/Octane/Crontab/backup_tmp.log

Ale jinak fajn, snažíš se, proto ti pomáháme. 
Opatrnost je sice vždycky na místě  :), nicméně v tomto konkrétním případě mi to přijde celkem zbytečné (co horšího se může stát než že se (akorát) vypne PC....
« Poslední změna: 09 Červenec 2019, 22:44:22 od juwa2 »

panRajce

  • Návštěvník
  • *
  • Příspěvků: 52
  • Karma: +0/-0
    • Zobrazit profil
Re:skript pro vypnutí PC - v Conky nebo jinak ?
« Odpověď #16 kdy: 10 Červenec 2019, 10:11:31 »
Ale jinak fajn, snažíš se, proto ti pomáháme.

Díky za pochvalu  :) Inu snažím se, když už se v tom hrabu, nejen slepě okopírovat kód, ale i trochu pochopit oč se v něm jedná. A pak to případně mít pro další použití.

Např. je zajímavé, že všude kde jsem gůůglil uváděli
Kód: [Vybrat]
echo ${PROMENNA} nebo
Kód: [Vybrat]
echo "$PROMENNA" ... respektive těch variací zápisů bylo spousta.

U tvého příkladu asi již chápu, že když chci vypsat číselnou proměnnou a ne textový řetězec, pak "" jsou zbytečné.

A pak proč ve tvém kódu pro vypnutí je použito ${GPU} a ne jen $GPU, tak jak je to u echo ???

Co bych ještě rád pochopil je, rozdíl mezi mým /home a tvým  $HOME ? ??? .... ale asi je to jen zkrácení zápisu cesty /home/uzivatel/  ???

Přesto musím mít někde chyb ... asi ne ve scriptu .... protože z terminálu bash test_Cron.sh to vypisuje správně.
Ale nechám-li výpis na "automatizaci" Cronem, tak se v souboru neobjevuje číselná hodnota, ale prázdný řádek.  :-[

(co horšího se může stát než že se (akorát) vypne PC
Jen to, že jej budu muset znovu a znovu nahazovat .... a i když má "jen" dvě 780TI, tak na něm v současné době provozuji výpočty. Takže chci mít nejprve kontrolu logu, než to pustím do ostrého provozu.  8)

TIBOR

  • Guru
  • *****
  • Příspěvků: 6186
  • Karma: +450/-21
  • Som uzivatel linuxovej distribucie, som linuxak?
    • Zobrazit profil
Re:skript pro vypnutí PC - v Conky nebo jinak ?
« Odpověď #17 kdy: 10 Červenec 2019, 10:25:57 »
Napr. tu mas vypisane systemove premenne aj s tym $HOME
https://www.linuxexpres.cz/praxe/bash-5-dil-1
Mozes si ich vyskusat a pochopis co to je.
Asus X751LB-TY014H Ubuntu 18.04 XX 64bit - Mate.
Linus, Lajnas, Línus, Luínus, Lajnus a je mi naozaj jedno, ako ľudia vyslovujú moje meno. Ale "Linux" je vždy "Linux". LINUS TORVALDS, tvorca Linuxového jadra.(V dokumente Revolution OS)

panRajce

  • Návštěvník
  • *
  • Příspěvků: 52
  • Karma: +0/-0
    • Zobrazit profil
Re:skript pro vypnutí PC - v Conky nebo jinak ?
« Odpověď #18 kdy: 10 Červenec 2019, 11:42:13 »
zkusím nastudovat :)

a nějaké vysvětlení proč bash z terminálu hodnotu do souboru zapíše a script spuštěný přes Cron nikoliv ?

ne že by to asi mělo pro výsledek "vypínání PC" vliv, pokud si bude schopen správně převzít od nvidia-settings hodnotu, ale spíše ze zvídavosti

juwa2

  • Závislák
  • ****
  • Příspěvků: 2819
  • Karma: +203/-38
    • Zobrazit profil
Re:skript pro vypnutí PC - v Conky nebo jinak ?
« Odpověď #19 kdy: 10 Červenec 2019, 12:28:17 »
Spusť si ten skript ručně (dvojklikem).  Pokud hodnotu do souboru zapíše, není žádný důvod aby neudělal totéž při spuštění cronem...
Spíše bych řekl, že ta úloha se vůbec nespustí (máš to v cronu zadáno blbě). Popiš jak to do cronu zadáváš, nebo sem dej výpis
Kód: [Vybrat]
crontab -l
Jinak jestli se úloha spustila nebo co se děje zjistíš v souboru
Kód: [Vybrat]
/var/log/syslog
Orientuj se dle času. Najdeš tam kdy se cron úloha spustila a s jakým výsledkem.
« Poslední změna: 10 Červenec 2019, 12:42:54 od juwa2 »

panRajce

  • Návštěvník
  • *
  • Příspěvků: 52
  • Karma: +0/-0
    • Zobrazit profil
Re:skript pro vypnutí PC - v Conky nebo jinak ?
« Odpověď #20 kdy: 10 Červenec 2019, 13:36:34 »
v Crontab mám
Kód: [Vybrat]
*/1 * * * * /home/uzivatel/Install/Octane/Crontab/test_Cron.sh
poslední, resp. první řádky v syslog
 
Kód: [Vybrat]
Jul 10 00:06:53 Ubuntu anacron[2201]: Job `cron.daily' terminated
Jul 10 00:06:53 Ubuntu anacron[2201]: Normal exit (1 job run)
Jul 10 00:07:01 Ubuntu CRON[11054]: (uzivatel) CMD (/home/uzivatel/Install/Octane/Crontab/test_Cron.sh)
Jul 10 00:07:01 Ubuntu CRON[11052]: (CRON) info (No MTA installed, discarding output)

dvojklik mi test_Cron.sh otevře v textovém editoru, proto jej spouštím ručně přes terminál
Kód: [Vybrat]
bash test_Cron.shsamozřejmě terminál mám v konkrétním adresáři

West

  • Člen
  • **
  • Příspěvků: 137
  • Karma: +9/-1
    • Zobrazit profil
Re:skript pro vypnutí PC - v Conky nebo jinak ?
« Odpověď #21 kdy: 10 Červenec 2019, 14:20:05 »
Script spustený pomocou cronu môže mať definované iné environment premenné, napríklad PATH (ale aj iné).
Daj si do toho skriptu niekde na začiatok:
env >> ~/environment.txt
echo >> ~/environment.txt
Spusti ten skritp z terminálu a následne pomocou cronu. Mal by si vidieť nejaké rozdiely. Súbor ktorý to vytvorí bude v domácom adresári užívateľa.

Pri písaní skriptov je vhodné nadefinovať príkazy do premenných pomocou prikazu 'which'.
príklad:
CMD_SLEEP=`which sleep 2>/dev/null`
Po vykonaní nadobudne premenná CMD_SLEEP samotný príkaz sleep včítane kompletnej cesty k nemu a bude vyzerať nejak takto: /usr/bin/sleep
Pre použitie príkazu v scripte potom stačí písať: $CMD_SLEEP

juwa2

  • Závislák
  • ****
  • Příspěvků: 2819
  • Karma: +203/-38
    • Zobrazit profil
Re:skript pro vypnutí PC - v Conky nebo jinak ?
« Odpověď #22 kdy: 10 Červenec 2019, 15:07:36 »
v Crontab mám
Kód: [Vybrat]
*/1 * * * * /home/uzivatel/Install/Octane/Crontab/test_Cron.sh
poslední, resp. první řádky v syslog
 
Kód: [Vybrat]
Jul 10 00:06:53 Ubuntu anacron[2201]: Job `cron.daily' terminated
Jul 10 00:06:53 Ubuntu anacron[2201]: Normal exit (1 job run)
Jul 10 00:07:01 Ubuntu CRON[11054]: (uzivatel) CMD (/home/uzivatel/Install/Octane/Crontab/test_Cron.sh)
Jul 10 00:07:01 Ubuntu CRON[11052]: (CRON) info (No MTA installed, discarding output)

dvojklik mi test_Cron.sh otevře v textovém editoru, proto jej spouštím ručně přes terminál
Kód: [Vybrat]
bash test_Cron.shsamozřejmě terminál mám v konkrétním adresáři

Proč máš v cestě toho skriptu "uzivatel"?  Ty máš účet s názvem "uzivatel"??  :o
Uveď to do pořádku.  Nebo tam napiš ~ nebo $HOME

A vypadá to, že ten tvůj skript nemá nastavenou spustitelnost. Proto ho cron pochopitelně nespustí.  Napravíš to příkazem:
Kód: [Vybrat]
chmod a+x ~/Install/Octane/Crontab/test_Cron.sh
« Poslední změna: 10 Červenec 2019, 15:33:20 od juwa2 »

panRajce

  • Návštěvník
  • *
  • Příspěvků: 52
  • Karma: +0/-0
    • Zobrazit profil
Re:skript pro vypnutí PC - v Conky nebo jinak ?
« Odpověď #23 kdy: 10 Červenec 2019, 15:50:21 »
SPUSTITELNOST  8)
toť ta věc na kterou si v Linuxu nemohu zvyknout :D
a v mnohých návodech jí berou jako samozřejmost, takže jí ani neuvádějí  :-\

I tak to do logu při spuštění Cronem vypisuje prázdný řádek  :-\

Script spustený pomocou cronu môže mať definované iné environment premenné, napríklad PATH (ale aj iné).
Daj si do toho skriptu niekde na začiatok:
env >> ~/environment.txt
echo >> ~/environment.txt
Spusti ten skritp z terminálu a následne pomocou cronu. Mal by si vidieť nejaké rozdiely. Súbor ktorý to vytvorí bude v domácom adresári užívateľa.

Rozdíly tam jsou, například PWD, SHELL, PATH, SHLVL.
z Cronu
Kód: [Vybrat]
LANG=cs_CZ.UTF-8
PWD=/home/uzivatel
HOME=/home/uzivatel
SHELL=/bin/sh
SHLVL=1
LOGNAME=uzivatel
PATH=/usr/bin:/bin
_=/usr/bin/env
Při výpisu z terminálu to vypsalo mnohem více hodnot.

panRajce

  • Návštěvník
  • *
  • Příspěvků: 52
  • Karma: +0/-0
    • Zobrazit profil
Re:skript pro vypnutí PC - v Conky nebo jinak ?
« Odpověď #24 kdy: 10 Červenec 2019, 16:01:19 »
Asi v tom bude pěknej guláš :) ale zkusím to sem hodit, třeba to někoho trkne. Současný stav je

test_Cron.sh
Kód: [Vybrat]
#!/bin/bash
GPUtemp=$(exec nvidia-settings -tq [gpu:0]/GPUCoreTemp -t)
GPUload=$(exec nvidia-settings -tq [gpu:0]/GPUUtilization | awk -F '[,= ]' '{ print $2 }')
env >> ~/environment.txt
echo >> ~/environment.txt
echo "Temp" $GPUtemp >> $HOME/Install/Octane/Crontab/backup_tmp.log
echo "Load" $GPUload >> $HOME/Install/Octane/Crontab/backup_tmp.log
exec nvidia-settings -tq [gpu:0]/GPUCoreTemp >> $HOME/Install/Octane/Crontab/backup_tmp.log

Výsledný obsah backup_tmp.log
Kód: [Vybrat]
Temp 82
Load 98
82
Temp
Load
Temp
Load
Temp
Load

první tři řádky jsou po spuštění z terminálu, další řádky už z Cronu ... je vidět ,že číselné hodnoty prostě ignoruje