Używanie crontab do wykonywania skryptu co minutę, a kolejne co 24 godziny [zamknięte]

316

Potrzebuję składni crontab, która powinna wykonywać określony skrypt PHP /var/www/html/a.phpco minutę. Wykonanie w każdej minucie musi rozpocząć się o 00:00. Inne zadanie, które musi wykonać skrypt o 00:00 /var/www/html/reset.php(raz na 24 godziny).

Michał
źródło

Odpowiedzi:

586

każda minuta:

* * * * * /path/to/php /var/www/html/a.php

co 24 godziny (co północ):

0 0 * * * /path/to/php /var/www/html/reset.php

Zobacz to odniesienie, aby dowiedzieć się, jak działa crontab: http://adminschoice.com/crontab-quick-reference oraz to przydatne narzędzie do budowania zadania cron: http://www.htmlbasix.com/crontab.shtml

Jan Hančič
źródło
3
Drogi Janie! Świetna odpowiedź. Co powiesz na uruchamianie crona co 30 sekund? Czy to tak jest? * * * * * / 30 / path / to / php /var/www/html/a.php?
flaab
26
Niestety nie można uruchamiać zadań cron częściej niż co minutę. Musisz do tego użyć czegoś innego.
Jan Hančič
9
Jan Hančič, możesz to zrobić. Wystarczy użyć prostej sztuczki opisanej tutaj: stackoverflow.com/a/1034304/1580615
Ruben
Czy normalną praktyką jest wykonywanie skryptu .php co minutę za pomocą crona? Czy może zmniejszyć wydajność serwera? Czy są jakieś inne złe skutki uboczne?
Andrew
@flaab co 30 sekund możesz wypróbować coś takiego: - * * * * * curl - cichy adres URL> / dev / null 2> & 1 * * * * * sleep 30; curl - cichy adres URL> / dev / null 2> i 1
Shashank Shah
375

To jest format / etc / crontab:

# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed

Zalecam skopiowanie i wklejenie go na początku pliku crontab, aby zawsze mieć pod ręką odniesienie. Systemy RedHat są domyślnie konfigurowane w ten sposób.

Aby uruchomić coś co minutę:

* * * * * username /var/www/html/a.php

Aby uruchomić coś o północy każdego dnia:

0 0 * * * username /var/www/html/reset.php

Możesz dołączyć / usr / bin / php do komendy, aby uruchomić, lub możesz ustawić bezpośrednie uruchamianie skryptów php:

chmod +x file.php

Uruchom plik php z shebang, aby twoja powłoka wiedziała, którego interpretera użyć:

#!/usr/bin/php
<?php
// your code here
Greg
źródło
42
To jest format /etc/crontab, który jest systemowym plikiem crontab. Plik crontab użytkownika ma inny format, który nie zawiera pola nazwy użytkownika, ponieważ działa jako użytkownik, który go przesłał. Jeśli chcesz uruchomić zadanie crona jako użytkownik inny niż root, powinieneś użyć crontabpolecenia, aby je przesłać (i nie martw się o to, gdzie jest przechowywany plik crontab). Nie zadzieraj, /etc/crontabchyba że naprawdę musisz.
Keith Thompson,
umm ... nie, wciąż nie działa
Madeo