Uruchamianie pliku javy w cron

Uruchamianie pliku javy w cron
SE
  • Rejestracja:ponad 6 lat
  • Ostatnio:5 miesięcy
  • 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?

Kerai
zrób sobie .sh i tyle
YA
  • Rejestracja:około 10 lat
  • Ostatnio:około 3 godziny
  • Postów:2371
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:około 6 lat
  • Ostatnio:około 3 lata
  • 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.


Nie sztuka uciec gdy w dupie sztuciec. 🐪🐪🐪
edytowany 1x, ostatnio: PerlMonk
SE
  • Rejestracja:ponad 6 lat
  • Ostatnio:5 miesięcy
  • 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.