Процесс java все еще убит

Мне нужно запустить java-программу на моих университетских серверах. Я дистанционно регистрируюсь через свои серверы через ssh

Поэтому я использовал nohup так:

nohup java -jar project.jar & 

Однако, когда я выхожу из системы и закрываю терминал, а затем возвращаюсь обратно к серверу, мой процесс отсутствует / был убит.

nohup делает программу невосприимчивой к сигналам SIGHUP и SIGQUIT . Современная оболочка может отправлять другие сигналы при выходе из вашей сессии, поэтому нет никакой гарантии, что ваша программа не будет убита, даже запущена под nohup .

Лучшее решение – использование tmux или screen , или если вы используете bash , вы можете попробовать:

 $ java -jar project.jar & $ disown 

Еще один вариант вместо (хронически дисфункциональный) nohup :

 setsid java -jar project.jar </dev/zero &>/dev/null & 

Это эффективно «демонзирует» этот процесс. Теперь он принадлежит init, поэтому никогда не получит HUP'd, его потоки ввода-вывода будут безопасными, и он будет раздвоен в фоновом режиме.

См. man setsid для получения дополнительной информации. В отличие от screen или tmux , это не программа, которая заявляет права собственности и продолжает работать. Он просто запускает программу в своей собственной группе процессов .

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

Учебное пособие: http://www.rackaid.com/blog/linux-screen-tutorial-and-how-to/

Попробуйте запустить nohup с перенаправлением STDOUT и STDERR в null:

 nohup java -jar project.jar 2>&1 &