Зберігання програми Java, коли SSH закрито в Google Cloud


12

Зараз я запускаю програму Java від SSH-ing до VM в Google Cloud Compute. Я видаю команду запустити додаток, і він завантажує консоль. Як тільки я припиняю з'єднання SSH, додаток вимикається. Я припускаю, що це тому, що консоль була закрита.

Я хотів би, щоб ця програма (яка є сервером) зберігалася після припинення SSH, і в будь-який момент я хотів би мати можливість знову підключитися до консолі та видавати команди на сервері.


Відповіді:


15

Ви заявляєте це:

Я хотів би, щоб ця програма (яка є сервером) зберігалася після припинення SSH, і в будь-який момент я хотів би мати можливість знову підключитися до консолі та видавати команди на сервері.

Цілі злегка розпливчасті, але я буду брати участь у цьому!

Щоб запустити будь-яку команду як фоновий процес на сервері Linux, слід nohupдодати команду та додати &її до кінця.

Отже, остаточною командою було б:

nohup [your command] &

Це nohupозначає, що команда повинна ігнорувати "зависання", а &доданий до неї амперс - команда оболонки, яка повідомляє системі запускати команду як фоновий процес. Більше інформації про його використання можна знайти тут .

Коли ви запускаєте таку команду, як цей, процес запуститься, ви будете відправлені назад до командного рядка, і ви можете вийти з сеансу терміналу або навіть перейти і зробити щось інше, не пов’язане з цією командою, під час сеансу терміналу.


1
Якщо я хочу повернутися до процесу і ввести команду в консоль java, як би це зробити?
Noahb32

1
@ Noahb32 Ну, це запустить його як фоновий процес; Я в основному використовую цей метод, щоб просто запустити процес, а потім забути його. Якщо ви хотіли запустити нову консоль Java, ви можете просто зробити це, оскільки ви знову в оболонці. Але, можливо, вам слід вивчити використання, screenнатомість, оскільки це дозволяє повернутися до сеансу після запуску. Чесно кажучи, ваше питання є великим розпливчастим, тому, якщо ви зможете уточнити його, це може допомогти з'ясувати речі.
JakeGould

1
Дякую! Я хотів би додати, що ви можете контролювати вихід з іншого терміналу: просто запустіть tail -f nohup.outту саму роботу. реж.
naXa

3

Існує щонайменше три способи зробити це: nohup("без відключення"), screen/ tmuxабо disown. З вами трохи незрозуміло запитання щодо вашої потреби підключитися до сервера та взаємодіяти з демоном після відключення.

Якщо це так, nohupі disownпід час випуску процесу не буде хороших матчів (хоча він продовжує працювати). tmux(а також screen) буде тримати термін, навіть якщо ви.

Для отримання додаткової інформації ви можете переглянути відповідні сторінки:

man nohup
man tux

Bash відмовився (якщо припустити, що ви використовуєте Bash, хоча багато інших оболонок включають щось подібне)


Здається, що disownв Google Cloud немає команди, принаймні екземпляра, який я використовую, розпочато 2019 рік або в кінці 2018 року. nohupКоманда працює чудово, але вона створює додатковий файл, який може бути не потрібним.
trysis

1

Щоб від'єднати програму від її запущеної оболонки та змусити її зберігатись після виходу оболонки, скористайтеся nohupкомандою.

Ви просто приставте свою звичайну команду до nohupі вона повинна працювати.


0

Також якщо nohub не працює, ви можете використовувати екран :

 ssh into your remote box. 

введіть потрібний процес.

Press Ctrl-A then Ctrl-D. 

Це від'єднає ваш сеанс на екрані, але залишить ваші процеси. Тепер ви можете вийти з віддаленого вікна.

If you want to come back later, log on again and type screen -r This will resume your screen session, and you can see the output

з

ваш процес.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.