![]() |
![]() ![]() |
![]() |
![]() ![]()
Post
#1
|
|
![]() Grupa: Developerzy Postów: 823 Pomógł: 12 Dołączył: 18.12.2005 Ostrzeżenie: (0%) ![]() ![]() |
Witam, ostatnio napisałem mały rogram w bashu, który ma za zadanie restartować apache, gdy ten nie odpowiada:
Kod #!/bin/bash TEMP_PATH='/tmp/CheckApache.tmp' rm -f "$TEMP_PATH" wget 'http://example.com/ping.php' -T 10 -t 2 -O "$TEMP_PATH" if [ -e "$TEMP_PATH" ] then echo 'Srv Status: OK'; rm -f "$TEMP_PATH" else echo 'Srv Status: FAILED'; /etc/init.d/apache2 restart fi W momencie, gdy serwer działa, wynik (response body) zapisywane jest w /tmp/CheckApache.tmp i zaraz po tym (gdy plik istnieje) usuwane. Problem polega na tym, że gdy serwer nie odpowiada (timeout lub próba połączenia jest przerwana dwukrotnie) linia 6 programu zwraca pozytywny wynik i nigdy nie uruchamia się to, co jest po else. Co zrobić, żeby wynik wget nie zapisywał się do pliku, gdy akcja nie powiodła się, lub jak sprawdzić długość (wielkość) pliku CheckApache.tmp? Jeżeli byłaby równa 0 - akcja nie powiodła się, a serwer by się poprawnie zrestartował. -------------------- Portfolio: Vgroup.pl | athlan.pl | Test.php.pl - sprawdź się z wiedzy o PHP i ułóż własne pytania!
Pomogłem? Kliknij |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 14 Pomógł: 2 Dołączył: 17.02.2009 Ostrzeżenie: (0%) ![]() ![]() |
Spróbuj tak:
Kod <span class="postcolor">#!/bin/bash if [ -e /tmp/CheckApache.tmp ] then rm -f /tmp/CheckApache.tmp fi wget 'http://example.com/ping.php' -T 10 -t 2 -O /tmp/CheckApache.tmp if [ -e /tmp/CheckApache.tmp ] then echo 'Srv Status: OK'; rm -f /tmp/CheckApache.tmp else echo 'Srv Status: FAILED'; /etc/init.d/apache2 restart fi jak dla mnie powinno działać, aktualnie nie mam jak tego sprawdzić, ale daj znać czy jest ok |
|
|
![]()
Post
#3
|
|
![]() Grupa: Developerzy Postów: 823 Pomógł: 12 Dołączył: 18.12.2005 Ostrzeżenie: (0%) ![]() ![]() |
Nie. Problem polega na tym, że nawet przy niepowodzeniu wget tworzy plik z pustym contentem, dlatego topic nazywa się tak a nie inaczej. Nic mi nie da sprawdzenie, czy plik istnieje, bo istnieć będzie zawsze (nawet przy niepowodzeniu: timeoucie, przerwaniu połączenia, etc.).
-------------------- Portfolio: Vgroup.pl | athlan.pl | Test.php.pl - sprawdź się z wiedzy o PHP i ułóż własne pytania!
Pomogłem? Kliknij |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 158 Pomógł: 43 Dołączył: 9.11.2007 Ostrzeżenie: (0%) ![]() ![]() |
zastosuj parametr -s przy sprawdzaniu pliku, sprawdza on czy plik i ma niezerowy rozmiar
|
|
|
![]()
Post
#5
|
|
![]() Grupa: Przyjaciele php.pl Postów: 5 724 Pomógł: 259 Dołączył: 13.04.2004 Skąd: N/A Ostrzeżenie: (0%) ![]() ![]() |
Ech, przeciez masz zmienna $?
Sprawdzasz ja po wgecie i jak ma wartosc == 0 to wget sie prawidlowo zakonczyl, else z bledem. -------------------- Nie lubię jednorożców.
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 28.06.2025 - 06:06 |