Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2016-05-19 17:11:25

  pink - Użytkownik

pink
Użytkownik
Skąd: P17PY93
Zarejestrowany: 2005-09-16

Skrypt do wstrzymywania systemu

Kod:

#!/bin/bash

    battery_level='cat /sys/class/power_supply/BAT0/capacity'
    if [ $battery_level -le 10 ]; then
    sudo bash -c 'echo mem > /sys/power/state'
    fi

chce stworzyc taki skrypt i dodac go do crona aby sprawdzal powiedzmy co 5 minut i jak poziom baterii spadnie to... wiadomo o co chodzi


ale przy odpaleniu dostaje

Kod:

 ./checkbat.sh 
./checkbat.sh: line 3: [: too many arguments

po edycji

Kod:

#!/bin/bash
    battery_level='acpi -b | cut -d ' ' -f4 | grep -o '[0-9]*' | head -n 1'
    critical_threshold=10
    if [ $battery_level -lt $critical_treshold ]; then
        sudo bash -c 'echo mem > /sys/power/state'
    fi

skrypt sie odpala bez bledow ale operator (warunek)  -lt nie dziala porostu system usypia.

Ostatnio edytowany przez pink (2016-05-19 17:36:22)


T430 think-box 4.9-custom x86_64 Intel(R) Core(TM) i5-3230M CPU @ 2.60GHz GenuineIntel GNU/Linux
"Doktor plama i maharadża są pod złotym leszczem." "Człowieka od zwierzęcia odróżnia ciekawość świata. Patrze słucham i wyciągam wnioski."
https://www.behance.net/przemyslawmamon

Offline

 

#2  2016-05-19 19:16:48

  seler - Użytkownik

seler
Użytkownik
Zarejestrowany: 2012-05-15

Re: Skrypt do wstrzymywania systemu

Czy w linijce:

Kod:

battery_level='cat /sys/class/power_supply/BAT0/capacity'

zamiast:

Kod:

'

nie powinno być:

Kod:

`

?


a to feler westchnął seler

Offline

 

#3  2016-05-19 20:36:30

  Pavlo950 - człowiek pasjonat :D

Pavlo950
człowiek pasjonat :D
Zarejestrowany: 2012-02-20
Serwis

Re: Skrypt do wstrzymywania systemu

Generalnie tak, ale ja próbowałem coś innego wyskrobać i u mnie wynik polecenia traktowane jest jak polecenie, ale to raczej problem z pętlą (bo pomyślałem, żeby obyć się bez crona):

Kod:

#!/bin/bash

for ((i=1; i = i; i++)); do
if `cat /sys/class/power_supply/BAT0/capacity` -lt 5; then
sudo bash -c 'echo mem > /sys/power/state';
fi

done

Ostatnio edytowany przez Pavlo950 (2016-05-19 20:37:54)

Offline

 

#4  2016-05-19 21:03:27

  pink - Użytkownik

pink
Użytkownik
Skąd: P17PY93
Zarejestrowany: 2005-09-16

Re: Skrypt do wstrzymywania systemu

Kod:

./checkbat.sh: line 5: 64: command not found

64 to poziom baterii w chwili wywolania skryptu

Ostatnio edytowany przez pink (2016-05-19 21:04:18)


T430 think-box 4.9-custom x86_64 Intel(R) Core(TM) i5-3230M CPU @ 2.60GHz GenuineIntel GNU/Linux
"Doktor plama i maharadża są pod złotym leszczem." "Człowieka od zwierzęcia odróżnia ciekawość świata. Patrze słucham i wyciągam wnioski."
https://www.behance.net/przemyslawmamon

Offline

 

#5  2016-05-19 23:44:00

  uzytkownikubunt - Zbanowany

uzytkownikubunt
Zbanowany
Zarejestrowany: 2012-04-25

Re: Skrypt do wstrzymywania systemu

3021

Ostatnio edytowany przez uzytkownikubunt (2016-12-01 01:41:01)

Offline

 

#6  2016-05-21 18:05:19

  seler - Użytkownik

seler
Użytkownik
Zarejestrowany: 2012-05-15

Re: Skrypt do wstrzymywania systemu

1. A więc pink i Pavlo950 to ta sama osoba?

Pavlo950 napisał(-a):

Generalnie tak, ale ja próbowałem coś innego wyskrobać i u mnie wynik polecenia traktowane jest jak polecenie, ale to raczej problem z pętlą (bo pomyślałem, żeby obyć się bez crona):

Kod:

#!/bin/bash

for ((i=1; i = i; i++)); do
if `cat /sys/class/power_supply/BAT0/capacity` -lt 5; then
sudo bash -c 'echo mem > /sys/power/state';
fi

done

To jest zupełnie źle. Niepotrzebna zmienna "i" oraz brak nawiasów kwadratowych dookoła warunku w ifie. W tej postaci najpierw jest uruchamiany ten "cat /sys/..." a potem wynik jest traktowany jako polecenie, którego kod wyjścia sprawdza if. Prawidłowo powinno być coś na kształt:

Kod:

#!/bin/bash
critical=10
while true; do
    if [ "$(cat /sys/class/power_supply/BAT0/capacity)" -lt "$critical" ]; then
        sudo bash -c 'echo mem > /sys/power/state'
    fi
done

a to feler westchnął seler

Offline

 

#7  2016-05-21 20:17:55

  uzytkownikubunt - Zbanowany

uzytkownikubunt
Zbanowany
Zarejestrowany: 2012-04-25

Re: Skrypt do wstrzymywania systemu

3024

Ostatnio edytowany przez uzytkownikubunt (2016-12-01 01:41:05)

Offline

 

#8  2016-05-21 20:58:29

  Pavlo950 - człowiek pasjonat :D

Pavlo950
człowiek pasjonat :D
Zarejestrowany: 2012-02-20
Serwis

Re: Skrypt do wstrzymywania systemu

seler napisał(-a):

1. A więc pink i Pavlo950 to ta sama osoba?
(...)
To jest zupełnie źle. Niepotrzebna zmienna "i" oraz brak nawiasów kwadratowych dookoła warunku w ifie. W tej postaci najpierw jest uruchamiany ten "cat /sys/..." a potem wynik jest traktowany jako polecenie, którego kod wyjścia sprawdza if. Prawidłowo powinno być coś na kształt:

Kod:

#!/bin/bash
critical=10
while true; do
    if [ "$(cat /sys/class/power_supply/BAT0/capacity)" -lt "$critical" ]; then
        sudo bash -c 'echo mem > /sys/power/state'
    fi
done

Kod:

#!/bin/bash

for ((i=1; i = i; i++)); do
if [ "$(cat /sys/class/power_supply/BAT0/capacity)" -lt 5 ]; then
sudo bash -c 'echo mem > /sys/power/state';
fi

done

Też działa. Bez zmiennej "krytycznej", ale ze zmienną i. Osobiście, pokusiłbym się o coś takiego:

Kod:

#!/bin/bash
while true; do
    if [ "$(cat /sys/class/power_supply/BAT0/capacity)" -lt 5 ]; then
        sudo bash -c 'echo mem > /sys/power/state'
    fi
done

Zmienna "krytyczna" według mnie jest niepotrzebna - bo i do czego? To tylko kilka drobnych, zbędnych znaków w pamięci :D

Offline

 

#9  2016-05-21 21:08:58

  pink - Użytkownik

pink
Użytkownik
Skąd: P17PY93
Zarejestrowany: 2005-09-16

Re: Skrypt do wstrzymywania systemu

pogodzilem sie na razie z pm-suspend ale szukam takiego rozwiazania bo pm-suspend jest w konflikcie z
wacom-wireless, o czym juz pisalem wczesniej w jakims watku,
mianowicie uruchomienie tabletu automatycznie usypia system
zahaszowanie tego wpisu

Kod:

cat /etc/udev/rules.d/99-lowbat.rules      
# Suspend the system when battery level drops to 7% or lower
SUBSYSTEM=="power_supply", ATTR{status}=="Discharging", ATTR{capacity}=="[0-7]", RUN+="/usr/sbin/pm-suspend"

rozwiazuje problem z wacom-wreless ale wtedy usypianie przy niskim stanie baterii nie dziala wiec chce to jakos obejsc ztad caly pomysl ze skryptem


Pavlo

twoj skrypt dziala ale ze to petla to obciaza procek i to bardzo, sparwdz sam

dlatego rozwiazanie z cronem moze byc lepsze

Ostatnio edytowany przez pink (2016-05-21 21:25:33)


T430 think-box 4.9-custom x86_64 Intel(R) Core(TM) i5-3230M CPU @ 2.60GHz GenuineIntel GNU/Linux
"Doktor plama i maharadża są pod złotym leszczem." "Człowieka od zwierzęcia odróżnia ciekawość świata. Patrze słucham i wyciągam wnioski."
https://www.behance.net/przemyslawmamon

Offline

 

#10  2016-05-21 21:59:21

  Pavlo950 - człowiek pasjonat :D

Pavlo950
człowiek pasjonat :D
Zarejestrowany: 2012-02-20
Serwis

Re: Skrypt do wstrzymywania systemu

pink napisał(-a):

Pavlo

twoj skrypt dziala ale ze to petla to obciaza procek i to bardzo, sparwdz sam

Ja wiem że pętla, możesz dodać np sleep 10 i obejść się bez crona

Ostatnio edytowany przez Pavlo950 (2016-05-21 21:59:38)

Offline

 

#11  2016-05-21 22:15:58

  uzytkownikubunt - Zbanowany

uzytkownikubunt
Zbanowany
Zarejestrowany: 2012-04-25

Re: Skrypt do wstrzymywania systemu

3026

Ostatnio edytowany przez uzytkownikubunt (2016-12-01 01:41:08)

Offline

 

#12  2016-05-21 23:29:06

  pink - Użytkownik

pink
Użytkownik
Skąd: P17PY93
Zarejestrowany: 2005-09-16

Re: Skrypt do wstrzymywania systemu

Kod:

cat /sbin/checkbat.sh 

#!/bin/bash

    if [ "$(cat /sys/class/power_supply/BAT0/capacity)" -lt 10 ]; then
        sudo bash -c 'echo mem > /sys/power/state'
    fi

co 3 minuty do crontaba i dziala a te 3 minuty pozwalaja doladowac baterie do 10%


teraz moge sie pozbyc pm-utils i zobaczyc co z wacom-wireless

dizeki za pomoc

sorry, Putterfish ale wole rozwiązanie które sam rozumie


ps. teraz bym chcial dodac warunek ze jak

Kod:

cat /sys/class/power_supply/BAT0/status 
Charging

to system sie nie usypia albo system sie usypia tylko w przypadku status discharging.

Ostatnio edytowany przez pink (2016-05-21 23:55:59)


T430 think-box 4.9-custom x86_64 Intel(R) Core(TM) i5-3230M CPU @ 2.60GHz GenuineIntel GNU/Linux
"Doktor plama i maharadża są pod złotym leszczem." "Człowieka od zwierzęcia odróżnia ciekawość świata. Patrze słucham i wyciągam wnioski."
https://www.behance.net/przemyslawmamon

Offline

 

#13  2016-05-22 10:43:13

  uzytkownikubunt - Zbanowany

uzytkownikubunt
Zbanowany
Zarejestrowany: 2012-04-25

Re: Skrypt do wstrzymywania systemu

3027

Ostatnio edytowany przez uzytkownikubunt (2016-12-01 01:41:09)

Offline

 

#14  2016-05-22 17:37:32

  uzytkownikubunt - Zbanowany

uzytkownikubunt
Zbanowany
Zarejestrowany: 2012-04-25

Re: Skrypt do wstrzymywania systemu

3029

Ostatnio edytowany przez uzytkownikubunt (2016-12-01 01:41:11)

Offline

 

#15  2016-05-22 18:43:28

  Pavlo950 - człowiek pasjonat :D

Pavlo950
człowiek pasjonat :D
Zarejestrowany: 2012-02-20
Serwis

Re: Skrypt do wstrzymywania systemu

W maszynie na Virtualboxie te stany to freeze i disk :D mówię o sidzie, kernelu 4.5 (z potrzebnymi modułami) i VB ze stabilnego repo.

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
Nas ludzie lubią po prostu, a nie klikając w przyciski ;-)