Uruchom skrypt powłoki za pomocą crona

0

Mam to FeedIndexer.sh:

#!/bin/sh java -jar FeedIndexer.jar

Aby uruchomić FeedIndexer.jar, który znajduje się w tym samym katalogu co .sh, chciałbym uruchomić go za pomocą crontab, więc zrobiłem to:

# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user command
17 * * * * root    cd / && run-parts --report /etc/cron.hourly
25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
01 01 * * * root run-parts --report /home/slosada/workspace/FeedIndexer/target/FeedIndexer.sh
#

Ale nie wiem jak to uruchomić. Czy popełniłem błąd?

Wuffers
źródło
Prawdopodobnie powinien być na ServerFault. Ale co rozumiesz przez „nie działa”? Czy pojawia się komunikat o błędzie? Czy w ogóle nic się nie dzieje?
Jacob Mattison
1
Czy na pewno możesz umieścić instrukcję zaraz po sha-bang? tldp.org/LDP/abs/html/sha-bang.html#MAGNUMREF mówi: Ten interpreter poleceń wykonuje następnie polecenia w skrypcie, zaczynając od góry (linia po linii sha-bang)
Alberto Zaccagni
Nie, mój problem polega na tym, że nie wiem, jak go uruchomić ...
To już trzeci raz, kiedy powiedziałeś „Nie wiem, jak to uruchomić”. Uruchom co? Nie uruchamiasz crontabs, demon cron je analizuje i uruchamia polecenia w dowolnym określonym czasie
Michael Mrozek
Więc nie muszę nic więcej robić? ale .jar nie jest wykonywany

Odpowiedzi:

1

Nie potrzebujesz tej run-partsczęści. run-partssłuży do uruchamiania każdego skryptu w określonym katalogu i wystarczy uruchomić tylko jeden skrypt, który jest obsługiwany przez cronsiebie. To powinno działać:

01 01 * * * root /home/slosada/workspace/FeedIndexer/target/FeedIndexer.sh
Whitequark
źródło
0

Czy próbowałeś użyć jednocyfrowych pól godziny i minuty:

1 1 * * * 
Justin Ethier
źródło
Ok, ale jak można tego spróbować? To znaczy, jak bym to uruchomił?
Na przykład możesz zastąpić każdą 01z nich 1i poczekać godzinę lub dostosować ją tak, 1 * * * *aby uruchamiała skrypt w pierwszej minucie każdej godziny. Oto krótkie odniesienie: adminschoice.com/crontab-quick-reference
Justin Ethier
Dziękuję, że ten podręcznik naprawdę interesuje różne możliwości, ale nie wiem jeszcze, co muszę wpisać w terminalu ...
Jestem zdezorientowany. Plik crontab znajduje się pod / etc / crontab. Wystarczy użyć edytora, na przykład, viaby go edytować i dodać nową linię na dole.
Justin Ethier
to właśnie zrobiłem, ale .jar nie jest wykonywany
0

Mam zamiar zgadywać na podstawie wszystkich „nie działa!” że zadanie było wykonywane co godzinę, a nie to napisałeś.

01 01 * * * root run-parts --report /home/slosada/workspace/FeedIndexer/target/FeedIndexer.sh

Pola minut i godziny mają wartość 1. Oznacza to, że gdy bieżąca godzina to 1, a minuta to 1, zadanie powinno zostać uruchomione, co dzieje się tylko o 1:01 rano. Jeśli chcesz, aby zadanie było uruchamiane co godzinę, wykonaj:

0 * * * * root run-parts --report /home/slosada/workspace/FeedIndexer/target/FeedIndexer.sh

Uruchamia się, gdy bieżąca minuta wynosi 0, co naturalnie dzieje się co godzinę

Michał Mrożek
źródło
@Blanca Zredagowałem swoją odpowiedź, aby pokazać, jak biegać co godzinę. Jak powiedziałem, twoje obecne rozwiązanie działa codziennie, a nie co godzinę, dlatego prawdopodobnie uważasz, że „nie działa” - tak się zdarza rzadko
Michał Mrożek
Próbowałem tego co minutę, tylko do testu, a .jar nadal nie działa
Sądzę, że wtedy twój demon cron nie działa
Michael Mrozek
i co mogłem zrobić
@Blanca ... rozpocząć? Nie wiem, którego używasz, ale możesz pssprawdzić, czy działa; jeśli nie, zacznij
Michał Mrożek