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 pro vypnutí PC - v Conky nebo jinak ?  (Přečteno 36283 krát)

panRajce

  • Aktivní člen
  • *
  • Příspěvků: 119
skript pro vypnutí PC - v Conky nebo jinak ?
« kdy: 26 Června 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ů: 4935
Re:skript pro vypnutí PC - v Conky nebo jinak ?
« Odpověď #1 kdy: 26 Června 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

  • Aktivní člen
  • *
  • Příspěvků: 119
Re:skript pro vypnutí PC - v Conky nebo jinak ?
« Odpověď #2 kdy: 26 Června 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 Června 2019, 12:39:12 od panRajce »

juwa2

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

panRajce

  • Aktivní člen
  • *
  • Příspěvků: 119
Re:skript pro vypnutí PC - v Conky nebo jinak ?
« Odpověď #4 kdy: 26 Června 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ů: 4935
Re:skript pro vypnutí PC - v Conky nebo jinak ?
« Odpověď #5 kdy: 26 Června 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

  • Aktivní člen
  • *
  • Příspěvků: 119
Re:skript pro vypnutí PC - v Conky nebo jinak ?
« Odpověď #6 kdy: 26 Června 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ů: 4935
Re:skript pro vypnutí PC - v Conky nebo jinak ?
« Odpověď #7 kdy: 26 Června 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 Června 2019, 20:22:58 od juwa2 »

panRajce

  • Aktivní člen
  • *
  • Příspěvků: 119
Re:skript pro vypnutí PC - v Conky nebo jinak ?
« Odpověď #8 kdy: 01 Července 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ů: 5057
    • Lomítkáři
Re:skript pro vypnutí PC - v Conky nebo jinak ?
« Odpověď #9 kdy: 01 Července 2019, 17:54:05 »
@juwa2 :-)
Kód: [Vybrat]
poweroff
Stiskni CTRL + W ...
80% mozku tvoří kapalina ... u některých brzdová

juwa2

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

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

panRajce

  • Aktivní člen
  • *
  • Příspěvků: 119
Re:skript pro vypnutí PC - v Conky nebo jinak ?
« Odpověď #11 kdy: 08 Července 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ů: 4935
Re:skript pro vypnutí PC - v Conky nebo jinak ?
« Odpověď #12 kdy: 08 Července 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 Července 2019, 13:16:16 od juwa2 »

West

  • Aktivní člen
  • *
  • Příspěvků: 404
Re:skript pro vypnutí PC - v Conky nebo jinak ?
« Odpověď #13 kdy: 08 Července 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

  • Aktivní člen
  • *
  • Příspěvků: 119
Re:skript pro vypnutí PC - v Conky nebo jinak ?
« Odpověď #14 kdy: 09 Července 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ů: 4935
Re:skript pro vypnutí PC - v Conky nebo jinak ?
« Odpověď #15 kdy: 09 Července 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 Července 2019, 22:44:22 od juwa2 »

panRajce

  • Aktivní člen
  • *
  • Příspěvků: 119
Re:skript pro vypnutí PC - v Conky nebo jinak ?
« Odpověď #16 kdy: 10 Července 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

  • Závislák
  • ***
  • Příspěvků: 6529
  • Som uzivatel linuxovej distribucie, som linuxak?
Re:skript pro vypnutí PC - v Conky nebo jinak ?
« Odpověď #17 kdy: 10 Července 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.
HP Laptop 17-ca1xxx Ubuntu Mate 22.04 FF 64bit.
Asus X751LB-TY014H Ubuntu Mate 20.04.1 FF 64bit.
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

  • Aktivní člen
  • *
  • Příspěvků: 119
Re:skript pro vypnutí PC - v Conky nebo jinak ?
« Odpověď #18 kdy: 10 Července 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ů: 4935
Re:skript pro vypnutí PC - v Conky nebo jinak ?
« Odpověď #19 kdy: 10 Července 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 Července 2019, 12:42:54 od juwa2 »

panRajce

  • Aktivní člen
  • *
  • Příspěvků: 119
Re:skript pro vypnutí PC - v Conky nebo jinak ?
« Odpověď #20 kdy: 10 Července 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

  • Aktivní člen
  • *
  • Příspěvků: 404
Re:skript pro vypnutí PC - v Conky nebo jinak ?
« Odpověď #21 kdy: 10 Července 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ů: 4935
Re:skript pro vypnutí PC - v Conky nebo jinak ?
« Odpověď #22 kdy: 10 Července 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 Července 2019, 15:33:20 od juwa2 »

panRajce

  • Aktivní člen
  • *
  • Příspěvků: 119
Re:skript pro vypnutí PC - v Conky nebo jinak ?
« Odpověď #23 kdy: 10 Července 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

  • Aktivní člen
  • *
  • Příspěvků: 119
Re:skript pro vypnutí PC - v Conky nebo jinak ?
« Odpověď #24 kdy: 10 Července 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

 

Provoz zaštiťuje spolek OpenAlt.