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!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Strony: 1
#!/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
./checkbat.sh ./checkbat.sh: line 3: [: too many arguments
po edycji
#!/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)
Offline
Czy w linijce:
battery_level='cat /sys/class/power_supply/BAT0/capacity'
zamiast:
'
nie powinno być:
`
?
Offline
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):
#!/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
./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)
Offline
3021
Ostatnio edytowany przez uzytkownikubunt (2016-12-01 01:41:01)
Offline
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):
#!/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:
#!/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
Offline
3024
Ostatnio edytowany przez uzytkownikubunt (2016-12-01 01:41:05)
Offline
[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:
#!/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]
#!/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:
#!/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
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
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)
Offline
[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
3026
Ostatnio edytowany przez uzytkownikubunt (2016-12-01 01:41:08)
Offline
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
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)
Offline
3027
Ostatnio edytowany przez uzytkownikubunt (2016-12-01 01:41:09)
Offline
3029
Ostatnio edytowany przez uzytkownikubunt (2016-12-01 01:41:11)
Offline
Strony: 1
Time (s) | Query |
---|---|
0.00017 | SET CHARSET latin2 |
0.00008 | SET NAMES latin2 |
0.00138 | 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.191.30.192' WHERE u.id=1 |
0.00079 | REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '18.191.30.192', 1731781117) |
0.00085 | SELECT * FROM punbb_online WHERE logged<1731780817 |
0.00118 | DELETE FROM punbb_online WHERE ident='3.144.116.253' |
0.00109 | 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.00008 | SELECT search_for, replace_with FROM punbb_censoring |
0.00217 | 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.00100 | UPDATE punbb_topics SET num_views=num_views+1 WHERE id=28642 |
Total query time: 0.00879 s |