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




Użytkownik





#!/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'
fichce 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'
fiskrypt sie odpala bez bledow ale operator (warunek) -lt nie dziala porostu system usypia.
Ostatnio edytowany przez pink (2016-05-19 17:36:22)
Offline

Użytkownik


Czy w linijce:
battery_level='cat /sys/class/power_supply/BAT0/capacity'
zamiast:
'
nie powinno być:
`
?
Offline



człowiek pasjonat :D
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




Użytkownik





./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




Zbanowany





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

Użytkownik


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:
#!/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
doneOffline




Zbanowany





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



człowiek pasjonat :D
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
#!/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
doneZmienna "krytyczna" według mnie jest niepotrzebna - bo i do czego? To tylko kilka drobnych, zbędnych znaków w pamięci :D
Offline




Użytkownik





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



człowiek pasjonat :D
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




Zbanowany





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




Użytkownik





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'
fico 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




Zbanowany





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




Zbanowany





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



człowiek pasjonat :D
Strony: 1