Uruchamianie pliku javy w cron

Uruchamianie pliku javy w cron
SE
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 143
1

Witam,
Obecnie plik javy uruchamiam w konsoli:

Kopiuj
cd /var/www/html/java/folder ; java -cp ".:Java-WebSocket-1.5.1.jar:json-20201115.jar:logback-classic-1.1.3.jar:logback-core-1.1.3.jar:slf4j-api-1.7.7.jar:slf4j-simple-1.8.0-beta4.jar:bin/" -Dfile.encoding=UTF-8  webSocks.Main

Jednak chcę ten sam plik uruchamiać w crontab o danej godzinie, coś takiego nie działa:

Kopiuj
23 23 30 09 * java /var/www/html/java/folder ; java -cp ".:Java-WebSocket-1.5.1.jar:json-20201115.jar:logback-classic-1.1.3.jar:logback-core-1.1.3.jar:slf4j-api-1.7.7.jar:slf4j-simple-1.8.0-beta4.jar:bin/" -Dfile.encoding=UTF-8  webSocks.Main

Jak to poprawić aby zadziałało uruchamianie z crona?

YA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2384
3
  1. Możliwe, że proces, uruchomiony z crona, działa bez ustawionych zmiennych środowiskowych (JAVA_HOME, PATH etc.), chyba, że masz ustawione w profilu powłoki.
  2. Wykonujesz java /var/www/html/java/folder? Możliwe, że powinno być cd /var/www/html/java/folder.
  3. Harmonogram ustawiłeś na "30 września 23:23" - to za rok kolejne uruchomienie?
PerlMonk
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Warszawa 🐪
  • Postów: 1719
4

Faktycznie jest babol.

Kopiuj
23 23 30 09 * java /var/www/html/java/folder ; 

Jeśli mamy kilka poleceń i chcemy sprawdzić co nie działa przy odpalaniu z crona, można wrzucić te polecenia do oddzielnego pliku. Np.

Kopiuj
#!/bin/bash

#przekierowanie wyjścia do pliku
exec >> /tmp/log.txt
exec 2>&1

#drukowanie środowiska
env

#inne polecenia
cd folder
java Main

Potem w cronie

Kopiuj
23 23 30 09 * /pelna/sciezka/pliku.sh

Problemem może być to, że cron odpala polecenia z innym środowiskiem, niż normalny użytkownik z konsoli. Jeśli chcemy skorzystać z pliku ~/.profile, w swoim skrypcie używamy polecenia source:

Kopiuj
source /home/user/.profile

Można jeszcze ewentualnie bawić się z poleceniem exec, ale tu raczej nie będzie potrzeby.

SE
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 143
0
yarel napisał(a):
  1. Możliwe, że proces, uruchomiony z crona, działa bez ustawionych zmiennych środowiskowych (JAVA_HOME, PATH etc.), chyba, że masz ustawione w profilu powłoki.
  1. Wykonujesz java /var/www/html/java/folder? Możliwe, że powinno być cd /var/www/html/java/folder.
  2. Harmonogram ustawiłeś na "30 września 23:23" - to za rok kolejne uruchomienie?
  1. Faktycznie z cd działa prawidłowo
  2. W tym czasie to testowałem to taki czas podałem.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.