Zobacz logi w systemie
/var/log/syslog
/var/log/cron.log
/var/log/messeges
i poszukaj jak skrypt był uruchamiany i z jaką częstotliwością.
Teraz trudno powiedzieć czemu tak się stało. Jedyne co mi przychodzi do głowy, to taka sytuacja:
1 minuta: odpala się skrypt, apache wisi wget długo pobiera stronę
2 minuta: odpala się skrypt, apache wisi wget długo pobiera stronę
3 minuta: odpala się skrypt, apache wisi, skrypt też wisi bo jest duży load na maszyne
mija trochę czasu, load spada i skrypty dostają czas procesora procesora, więc się wykonują. Zbiegiem okoliczności jest ta sama sekunda. Druga opcja to sytuacja, w której masz taką sytuację:
Założenia:
- duży load na maszynie
- wysokie zużycie zasoboów (IO, cpu, mem)
1 minuta: skrypt jeden zostaje uruchomiony, wget łapie time out po minucie, resetuje apache
2 minuta: skrypt zostaje uruchomiony, apache jest restartowany (jest load na maszynie, więc długo wstaje), w tym czasie wget zwraca błąd a Ty po raz kolejny resetujesz apache
I tak skrypty Ci się nakładają. Kolejna rzecz (błędna) w tych skryptach wszystkich jest taka, że robimy service stop. Jeśli mamy bardzo zachetaną maszynę to lepiej zrobić
ps aux | grep httpd | awk '{print $1}' | xargs kill -9
tj. ubić wszystkie procesy i zwolnić zasoby. Restarty są kosztowne i w przypadku apache nie warto ich robić - lepiej zrobić kill -9 (szybciej doprowadzisz do rownowagi w systemie).
Generalnie ja po raz kolejny polecam Ci monit - sprawdzone i działające rozwiązanie. Proste skrypty często się nie sprawdzają przy dużym obciążeniu i nie uwzględniają w/w przypadków.