Uruchom Jar in Background w systemie Linux

12

Mam słoik, który działa wiecznie (nieskończona pętla z wątkiem nasłuchującym) i muszę go zawsze uruchamiać w tle. Przykładem może być: „java -jar test.jar” Jak to zrobić? Z góry dziękuję!

Benny
źródło

Odpowiedzi:

8

kilka sposobów:

  1. dołączanie &z tyłu. Jednak przy użyciu tego program nadal będzie przerywany, jeśli zamkniesz terminal, który uruchomił program.

  2. Rozpocznij screensesję i uruchom w niej program; możesz odłączyć screensesję i zamknąć terminal. Później możesz ponownie dołączyć do sesji i powrócić do konsoli, jakbyś był tam cały czas. Jednak przed uruchomieniem programu musisz rozpocząć sesję ekranową, a jeśli zapomniałeś to zrobić, nie możesz nic z tym zrobić.

  3. Użyj disownkontroli zadań ze swojej powłoki. Spowoduje to odłączenie zadania od twojego tty i twój program nie zostanie zakończony, gdy tty zostanie zamknięty. Nie sądzę jednak, aby istniał jakiś sposób na ponowne przyjęcie odrzuconej pracy.

Lie Ryan
źródło
13

Wiersz polecenia, którego zawsze używałem przez długi czas do wylogowania, to „nohup”, więc w twoim przypadku jest to

nohup java -jar test.jar &

& Jest ważne, abyś mógł uruchomić kolejną powłokę. Wierzę, że to nie potrwa po ponownym uruchomieniu.


źródło
7

Jeśli przez „cały czas” masz na myśli, że zaczyna się, gdy komputer uruchamia się, musisz go uruchomić w ramach skryptów czasu rozruchu. Brudnym sposobem na to jest dodanie

java -jar test.jar> / dev / null 2> & 1 &

do /etc/rc.local (lub zastąp / dev / null ulubionym plikiem dziennika).

Lepiej byłoby utworzyć skrypt init.d, który uruchamia się na odpowiednich poziomach pracy (na przykład możesz go nie chcieć na poziomie 0, 1 lub 6). W ten sposób możesz również uruchomić go automatycznie, jeśli umrze, i mieć ładniejszy interfejs do tymczasowego zatrzymania.

Małe przykłady na http://www.howtoforge.com/forums/archive/index.php/t-3628.html

Duże wyjaśnienie na stronie http://developer.novell.com/wiki/index.php/Writing_Init_Scripts


źródło
Inną możliwością, jeśli chcesz, aby działał tylko z uprawnieniami użytkownika, jest umieszczenie go w cronie i użycie „@reboot” jako czasu uruchomienia. Szczegóły w „man 5 crontab”.
pjz
3
java -jar test.jar &

Operator & wymusi uruchomienie procesu w tle, możesz następnie uruchomić polecenie „top”, aby zobaczyć, że jest uruchomiony.


źródło
1

Możesz uruchomić dowolne zadanie w tle w systemie Linux, dodając symbol „&” na końcu wiersza polecenia, np

java -jar test.jar &

źródło
1

Umieść &na końcu:java -jar test.jar &

František Žiačik
źródło