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

Zaloguj się, aby skomentować

Będziesz mógł dodać komentarz po zalogowaniu się



Zaloguj się
Zaloguj się, aby obserwować  

×