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
Serwis

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."
http://przemyslawmamon.com/
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
Serwis

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."
http://przemyslawmamon.com/
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?

[quote=Pavlo950]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

[/quote]
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

[quote=seler]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

[/quote]

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
Serwis

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."
http://przemyslawmamon.com/
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

[quote=pink]Pavlo

twoj skrypt dziala ale ze to petla to obciaza procek i to bardzo, sparwdz sam[/quote]
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
Serwis

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."
http://przemyslawmamon.com/
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 ;-)

[ Generated in 0.010 seconds, 11 queries executed ]

Informacje debugowania

Time (s) Query
0.00009 SET CHARSET latin2
0.00004 SET NAMES latin2
0.00104 SELECT u.*, g.*, o.logged FROM punbb_users AS u INNER JOIN punbb_groups AS g ON u.group_id=g.g_id LEFT JOIN punbb_online AS o ON o.ident='18.119.213.60' WHERE u.id=1
0.00066 REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '18.119.213.60', 1731787736)
0.00062 SELECT * FROM punbb_online WHERE logged<1731787436
0.00075 SELECT topic_id FROM punbb_posts WHERE id=301661
0.00156 SELECT id FROM punbb_posts WHERE topic_id=28642 ORDER BY posted
0.00057 SELECT t.subject, t.closed, t.num_replies, t.sticky, f.id AS forum_id, f.forum_name, f.moderators, fp.post_replies, 0 FROM punbb_topics AS t INNER JOIN punbb_forums AS f ON f.id=t.forum_id LEFT JOIN punbb_forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.id=28642 AND t.moved_to IS NULL
0.00005 SELECT search_for, replace_with FROM punbb_censoring
0.00122 SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM punbb_posts AS p INNER JOIN punbb_users AS u ON u.id=p.poster_id INNER JOIN punbb_groups AS g ON g.g_id=u.group_id LEFT JOIN punbb_online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.topic_id=28642 ORDER BY p.id LIMIT 0,25
0.00095 UPDATE punbb_topics SET num_views=num_views+1 WHERE id=28642
Total query time: 0.00755 s