2012-12-21 12 views

Odpowiedz

17

Dlaczego nie wpisać dwóch wpisów cron? Jeden na 00:00 i jeden na 13:30? Nie sądzę, że możesz zrobić to, co chcesz, w jednym wpisie, ponieważ dwie definicje będą obowiązywały dla obu definicji godzin (jak określiłeś).

Alternatywą jest być może wykonanie jednego skryptu o 00:00. Ten skrypt wykona oryginalny skrypt, następnie poczeka 13,5 godziny, a następnie ponownie wykona ten skrypt. Byłoby to łatwe do zrobienia za pomocą prostego polecenia sleep, ale myślę, że jest to niezrozumiałe i nie jestem pewien, jak cron zarządza tak długo działającymi procesami (co się stanie, jeśli edytujesz crontab - czy to zabije zrodzonego zadania itp.)

+0

myślałem tak jak ty na początku, ale powiedział, że głupio jest pisać dwa wpisy cronu –

+3

To może być głupie, ale może być a) możliwe do utrzymania b) nieuniknione –

+6

@wassim: cron jest przeznaczony do miłych, powtarzalnych interwałów, a nie arbitralnych czasów w ciągu dnia. użyj dwóch wpisów cron i przejdź dalej. –

36

Spróbuj to-: 00 01,13 * * *

to będzie działać na 1 rano i godzina trzynasta

+1

Co nie jest tym, co OP chce, na pewno - "wykonaj crontab dwa razy dziennie o 00h i 13:30". Różnica w minutach i godzinach powoduje, że numer –

+0

wydaje mi się, że jest to miłe obejście problemu. zmiana określonego czasu o <60 minut jest możliwa do zaakceptowania dla wielu przypadków użycia cron, imo –

1

try ...

00 01,13 * * * [ `date +%H%M` == 1330 ] || [ `date +%H%M` == 0000 ] && logger "its time" 
+0

zbyt skomplikowana, poprzednia odpowiedź jest łatwiejsza. –

+0

dzięki @MahdiElMasaoudi – Ankush

0

30 0,13 * * * somecommand.sh

To jest tylko przykład, ale zobaczysz, że jest to wpis crona, który będzie działał o 0:30, a potem o 13:30 (13 oznacza 1 w czasie militarnym). Po prostu przecinek oddziela godziny lub przecinek oddziela każdą część crona.

+0

Plus za "czas militarny", nie znał tej nazwy przez 24 godziny. – PeterM

+2

OP mówi: "chcę wykonać skrypt dwa razy dziennie o 00:00 i 13:30". Ta odpowiedź nie spełnia 00:00. –

4

Nie można tego zrobić z cronem w jednym wierszu. Musisz utworzyć 2 oddzielne linie tak:

# Will run "YourCommand" at 00:00 
0 0 * * * YourCommand 
# Will run "YourCommand" at 13:30 
30 13 * * * YourCommand 

lub jako jednej linii można uruchomić komendę co x godzin, tak jak poniżej:

# Will run "YourCommand" every 12 hours 
0 */12 * * * YourCommand 
Powiązane problemy