Często zachodzi potrzeba aby jakieś zadania na naszym serwerze zautomatyzować, albo muszą wywoływać się cyklicznie. Wykonywanie tych czynności to była by udręka i ponadto ciężko uruchamiać jakiś skrypt np. raz w tyg o godz. 10, więc potrzebujemy aby tą czynnośc wykonywał serwer automatycznie. Na ratunek przychodzi własnie Cron. Jest to aplikacja działająca w systemach z rodziny UNIX. Aby dodać jakieś zadanie do wykonywania cyklicznego musimy edytować tabele programu Cron:
cronetab -e
Potem dopisujemy na końcu pliku linijkę z czasem i zadaniem które ma zostać wykonane.
0 */6 * * 0,6 wget http://kubafilinger.pl/api >/dev/null 2>&1
W tym przypadku Cron będzie się uruchamiał co 6 godzin tylko w weekendy.
Czas
Czas jest podawany w dość specyficzny sposób:
* * * * * polecenie
Gdzie gwiazdki oznaczają kolejno: minuta godzina dzień miesiąc dzień_roboczy.
Bez większego zagłębiania się polecam użyć generatora.
Polecenie
W miejscu „polecenie” wywołujemy dowolne polecenie bash na które pozwalają nam uprawnienia, np.:
0 0 * * 1 wget http://kubafilinger.pl/api >/dev/null 2>&1
Czyli pobranie treści znajdujące się pod wskazanym adresem, a konkretnie chodzi o wywołanie skryptu znajdującego się pod wskazanym adesem. Cron wywołuje się w tym przypadku raz na tydzień w poniedziałek.
0 0 * * * mysqldump -u user -pPASSWORD database_name > /root/db.sql >/dev/null 2>&1
Codziennie ma się wykonywać kopia bazy danych i zapisywana do pliku db.sql.
>/dev/null 2>&1
>/dev/null 2>&1
>
przekierowanie
/dev/null
folder do ktorego trafione dane są niszczone
2
uchwyt dla błędu standardowego
>
przekierowanie
&
bez tego znaku, 1 ktora nastepuje po znku przekierowania byla by traktowana jako nazwa pliku
1
uchwyt dla wyjścia
Prościej:
wget http://kubafilinger.pl/api &> /dev/null
PS. fajny blog
Dzięki za zainteresowanie i feedback 🙂
Niestety to rozwiązanie, które podałeś nie działa na moim serwerze 🙁