Запустить файл jar с расписанием TimerTask в фоновом режиме в linux - PullRequest
0 голосов
/ 03 августа 2020

Я пытаюсь запустить приложение из jar-файла в фоновом режиме. Я уже пробовал nohup и &, но они не работают.

nohup java -cp ~/DataGenerator/target/GenerateDataApp-1.0-SNAPSHOT.jar Generator.App -p ~/Text2.txt &

Мое приложение - это простой таймер, который запускается каждые 1 с, каждый раз генерирует случайное число и сохраняет его в файл.

public class App {
    public static void main(String[] args) throws Exception{
        System.out.println("Start");
        Arguments arguments = Arguments.fromMain(args);
        SaveToFile saveToFile = new SaveToFile();
        saveToFile.creatFile(arguments.getPathToPropertiesFile());
        Timer timer = new Timer();
        timer.schedule(new SaveFileRunner(arguments), 0, 100);
        

    }
}

Я тоже пробовал сценарий bash, но он тоже не помог.

#!/bin/sh
cd ~/DataGenerator/target
java -cp ~/DataGenerator/target/GenerateDataApp-1.0-SNAPSHOT.jar Generator.App -p ~/Text.txt

Может кто-нибудь посоветует мне, как заставить таймер работать в бэкэнде ?

1 Ответ

1 голос
/ 03 августа 2020

Чтобы программа запускалась как фоновое задание, добавьте & в конец командной строки. Например:

java ...parameters here... &

Возможная проблема заключается в том, что программа записывает вывод, который все еще отображается в терминале. Вы можете отправить этот вывод в файл.

java ...parameters here... >output.txt 2>&1 &

Вторая проблема заключается в том, что если вы закроете оболочку или выйдете из системы, программа остановится. Чтобы этого избежать, используйте nohup.

nohup java ...parameters here... >output.txt 2>&1 &
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...