Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [bash] sprawdzanie wielkości pliku
Athlan
post
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ł.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
spoon-pl
post
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
Go to the top of the page
+Quote Post
Athlan
post
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.).
Go to the top of the page
+Quote Post
BaN
post
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
Go to the top of the page
+Quote Post
dr_bonzo
post
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.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.09.2025 - 19:30