Продовжуйте основне завдання / завдання SSH, коли закриваєте SSH


27

У мене те саме питання, що і тут, але навіть поза цим.

Якщо я виходжу / виходжу з SSH-з'єднання, мені потрібна моя програма, що працює у фоновому режимі. Перед виходом я набираю bgта jobsперевіряю фонове виконання завдання, але після виходу з SSH програма не запускається, вона закривається, коли я закриваю вікно SSH.

Що я можу зробити, якщо я хочу, щоб моя програма все ще працювала після закриття вікна SSH? Я використовую, nohup screenале це також не працює, або я щось пропускаю?


Ласкаво просимо до Супер Користувача! Будь ласка, не ставте свою відповідь на питання. Опублікуйте його як відповідь нижче, як тільки ви зможете (приблизно через 7 годин), натиснувши кнопку Відповісти на запитання . Дякую. (Також зауважте, що немає необхідності додавати <br/>s до вашої публікації. Просто робіть абзаци за потребою. І поки ви будете на ній, будь ласка, використовуйте правильну
написання

BTW не потрібно використовувати bgабо nohupпри використанні screen. Також це питання пов'язане.
justbrowsing

ви зробите перевірити цю нитку @ стек переповнення stackoverflow.com/questions/285015 / ...
Ashildr

Відповіді:


46

Під час використання screenвам потрібно від'єднатись від CTRL+A+ Dдо виходу ssh.

Крім того, якщо ви хочете запустити процес безпосередньо з екрана, ви можете використовувати

screen -dmSL [session name] [commands]
  • -d запускає сеанс на екрані та негайно відривається від нього
  • -m змушує створювати новий екранний сеанс
  • -S дозволяє дати ім’я сеансу
  • -L вмикає реєстрацію в ~/screenlog.0

приклад:

screen -dmSL workstuff myscript.sh

Потім ви можете:

пізніше відновити використання screen -x workstuff

або

перевірити файл журналу less -r ~/screenlog.0


14

Використовуйте tmux. Я навіть не впевнений, чи screenвсе ще знаходиться в активному розвитку. Це щось із переваги, але як хтось використовує tmux, я можу засвідчити, що він налаштувався приблизно за 5 хвилин і працював ідеально.

У системі на основі Debian (на віддаленій машині):

sudo apt-get install tmux

потім увійдіть, tmuxщоб увійти, запустіть будь-який процес, який вам потрібен, і натисніть Ctrl+ Bтоді D(це залишає сеанс tmux). Потім ви можете вийти із SSH.

Коли вам потрібно повернутися / перевірити його ще раз, запустіть SSH та введіть tmux attach. Це поверне вас до tmuxсесії.

tmuxмає ще багато можливостей, докладно описаних тут. Але це повинно вирішити вашу безпосередню проблему.

Удачі!


7

Нарешті я вирішив це за допомогою screen:

У режимі екрану від'єднайте його за допомогою CtrlAD. Потім ви можете закрити вікно SSH.


5

nohup використання: Перша з команд нижче запускає програму abcd у фоновому режимі таким чином, що наступний вихід не зупинить її.

$ nohup abcd &

$ вихід

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