Nowe posty

Autor Wątek: Skrypt i cron - wykonywanie skryptu co trzy minuty  (Przeczytany 10388 razy)

Kaka

  • Gość
Skrypt i cron - wykonywanie skryptu co trzy minuty
« dnia: 2007-05-19, 21:32:48 »
Witam,

mam problem ze skryptem i cronem. Mianowicie mam skrypt, który wysyła SMS'a gdy temperatura CPU, GPU i/lub twardziela będzie większa niż dana wartość. Ustawiłem w crontabie żeby skrypt wykonywał się co trzy minuty:

kaka@debian:~$ crontab -l
# m h  dom mon dow   command
*/3 *   * * *   /home/kaka/check_temp  >/home/kaka/plik

kaka@debian:~$

A w /home/kaka/plik jest:

kaka@debian:~$ cat plik
sob maj 19 21:27:02 CEST 2007
kaka@debian:~$

Czyli skrypt jednak się wykonuje, ale tylko do pewnej części.

/var/log/syslog nic nie mówi.

Nie wiem gdzie i czego szukać, po prostu ręce opadają mi.

Dodam jeszcze, że gdy wykonam ręcznie skrypt to jest wszystko ok:

kaka@debian:~$ sh check_temp
kaka@debian:~$ ./check_temp
kaka@debian:~$

Poniżej zamieszcza skrypt:

#!/bin/sh

strona="$(wget --timeout=5 -t 1 -q http://www.miastoplusa.pl -O - 2>/dev/null)"
[ -z "$strona" ] && exit 1

date > /home/kaka/plik

GPU_temp="$(nvidia-settings -q gpucoretemp | sed '/Attribute/!d;{s/.*): //;s/.//}' 2>/dev/null)"
HDD_temp="$(nc localhost 7634 | cut -d'|' -f4 2>/dev/null)"
CPU1_temp="$(< /sys/module/k8temp/drivers/pci:k8temp/0000:00:18.3/temp1_input)"
CPU2_temp="$(< /sys/module/k8temp/drivers/pci:k8temp/0000:00:18.3/temp3_input)"

tel_nr="123456789"

send_me_sms() {
        /usr/bin/sms -g miastoplusa -n ${tel_nr} -m "$info" 2>&1 >/dev/null
        return 0
}

for x in ${CPU1_temp:0:2} ${CPU2_temp:0:2}; do
        if [ "$x" -ge "70" ]; then
                info="Temp. Procesora : $x - komputer zostal wylaczony o $(date +%X)"
                send_me_sms
                sleep 3
                shutdown -h now
        else
                if [ "$GPU_temp" -ge "70" ]; then
                        info="Temp. GPU o godz. $(date +%X):  $GPU_temp stopni"
                        send_me_sms
                fi
                if [ "$HDD_temp" -ge "45" ]; then
                        info="Temp. HDD o godz. $(date +%X):  $HDD_temp stopni"
                        send_me_sms
                fi
                if [ "${CPU1_temp:0:2}" -ge "50" ]; then
                        info="Temp. CPU1 o godz. $(date +%X):  ${CPU1_temp:0:2} stopni"
                        send_me_sms
                fi
                if [ "${CPU2_temp:0:2}" -ge "50" ]; then
                        info="Temp. CPU2 o godz. $(date +%X):  ${CPU2_temp:0:2} stopni"
                        send_me_sms
                fi
        fi
done



Z góry bardzo dziękuję za pomoc.
Pozdrawiam.

PS: oczywiście numer telefonu dobry podaję, tylko tutaj zmieniłem go :)

chmooreck

  • Gość
Skrypt i cron - wykonywanie skryptu co trzy minuty
« Odpowiedź #1 dnia: 2007-05-19, 22:21:20 »
na pewno masz ścieżkę do nvidia-settings?
Czy nvidia-settings nie potrzebuje czasem znać numeru serwera X ?

może spróbuj wyrzucić do jakiegoś pliku pełne wyjście z nvidia-settings (na próbe, bez sed'a) pod odpaleniu z crona...

Kaka

  • Gość
Skrypt i cron - wykonywanie skryptu co trzy minuty
« Odpowiedź #2 dnia: 2007-05-19, 22:25:51 »
> na pewno masz ścieżkę do nvidia-settings?
 > Czy nvidia-settings nie potrzebuje czasem znać numeru serwera X ?

No właśnie tu mnie martwi, bo teraz w crontabie mam:

kaka@debian:~$ crontab -l
# m h  dom mon dow   command
*/3 *   * * *   /home/kaka/check_temp 2>/home/kaka/plik

kaka@debian:~$

A w /home/kaka/plik:

kaka@debian:~$ cat plik

(nvidia-settings:1954): Gtk-WARNING **: cannot open display:
/home/kaka/check_temp: line 27: [: : integer expression expected
/home/kaka/check_temp: line 27: [: : integer expression expected
kaka@debian:~$


Trzeba będzie nad tym kombinować...

chmooreck

  • Gość
Skrypt i cron - wykonywanie skryptu co trzy minuty
« Odpowiedź #3 dnia: 2007-05-20, 09:21:38 »
masz tam odpalone X'y ?

jeśli tak, to wystarczy wyeksportować zmienną DISPLAY przed uruchomieniem nvidia-settings, np.:
DISPLAY=":1.0" nvidia-settings

Kaka

  • Gość
Skrypt i cron - wykonywanie skryptu co trzy minuty
« Odpowiedź #4 dnia: 2007-05-20, 09:58:03 »
> masz tam odpalone X'y ?

Tak x'y mam odpalone.

chmooreck

  • Gość
Skrypt i cron - wykonywanie skryptu co trzy minuty
« Odpowiedź #5 dnia: 2007-05-20, 10:03:36 »
2007-05-20 09:21:38 chmooreck napisał:

 > DISPLAY=":1.0" nvidia-settings

działa ?

Kaka

  • Gość
Skrypt i cron - wykonywanie skryptu co trzy minuty
« Odpowiedź #6 dnia: 2007-07-08, 13:15:40 »
Ok, problem rozwiązany :)

Po kilku tygodniach wreszcie się za to zabrałem :)

Najpierw do crontaba dodałem:

*/3 * * * * /bin/sh -x /home/kaka/check_temp 2>/home/kaka/plik-debug.txt

No i okazało się, że jest problem z panelem NVIDIi, a dokładniej:

(nvidia-settings:1954): Gtk-WARNING **: cannot open display:

A więc, zamieniłem linię:

GPU_temp="$(nvidia-settings -q gpucoretemp | sed '/Attribute/!d;{s/.*): //;s/.//}' 2>/dev/null)"

na:

GPU_temp="$(DISPLAY=":0.0" nvidia-settings -q gpucoretemp | sed '/Attribute/!d;{s/.*): //;s/.//}' 2>/dev/null)"


czyli krótko mówiąc: wielkie, wielkie dzięki chmooreck :-)



Pozdrawiam.