Skocz do zawartości
Zaloguj się, aby obserwować  
Desavil

crontab - grep date

Polecane posty

Witam, próbuje użyć grep po dacie w crontab, jednak przy żadnym zapisie nie wykonuje się to zadanie. Oczywiście jak wpiszę to polecenie bezpośrednio w konsoli, działa bez problemów. Jak usunę date (grep'uję po np. numerze), to z crona się wykonuje.

 

Linia w /etc/crontab:

* * * * * root curl -s http://strona.pl | grep `date +"%y-%m-%d"` > /root/text.txt

Ma ktoś pomysł jak prawidłowo to zapisać? Od razu dodam, że nie mogę dodać tego do pliku ze skryptem i jego wywoływać.

 

Pozdrawiam!

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Używasz potoku czyli pipe, a cron odpala binarkę - pipe to umiejętność interpretera czyli shella.

 

Możesz tego shella albo stworzyć w sposób pośredni - tworząc np. skrypt .sh i go wykonując (wtedy cron sam odpali go w /bin/bash i zinterpretuje), lub w sposób bezpośredni - wykonując bash -c "curl ... > /root/text.txt" bezpośrednio z poziomu crontaba.

Edytowano przez Archi (zobacz historię edycji)
  • Upvote 1

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Mechanizm potoków jest przez crontaba jak najbardziej obsługiwany. Problem jest z backtickiem - bo jego użycie powoduje zmianę w locie wykonywanego polecenia, a tego już crontab nie analizuje (polecenia wykonuje literalnie). Czyli - póki linia poleceń jest statyczna, a dane wędrują potokami, to jest wszystko OK. Jak chce się wpływać na kształt polecenia, to już nie za bardzo.

 

Rozwiązaniem jest to, co napisał Archi - zakapsułkowanie tego do jakiegoś skryptu wywoływanego z powłoki - wtedy uruchomiona powłoka zinterpretuje poprawnie polecenie i je dopiero wykona.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Bądź aktywny! Zaloguj się lub utwórz konto

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto

Zarejestruj nowe konto, to proste!

Zarejestruj nowe konto

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się

Zaloguj się, aby obserwować  

×