Запуск довгого процесу на сервері Ubuntu [дублювати]


0

На це запитання вже є відповідь:

Скажімо, у мене є ноутбук і сервер Ubuntu. Існує важке завдання, яке я хочу виконати на сервері Ubuntu.

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

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


Заглянути nohup і tmux - вони роблять різні речі, але обидва будуть досягати того, чого ви прагнете.
Attie

Відповіді:


2

Використовуйте команду screen на сервері. Необхідно встановити відповідний пакет, якщо його немає на сервері

sudo apt-get install screen
  1. створити екран

    screen
    
  2. виконати команду, яку потрібно виконати на цьому екрані

  3. вийдіть з екрана, натиснувши Ctrl + a + d

  4. список екрану

    # screen -ls 
    
  5. Тепер ви можете вийти з ssh сеансу, коли ваша команда працює в екрані

  6. ssh знову і приєднайте екран, щоб перевірити стан команд

    screen -r screen_name
    

screen не працює, якщо я перезавантажу ноутбук
mommomonthewind

Вам потрібно запустити screen на сервері, а не на ноутбуці
Attie

Ви хочете запустити завдання на віддаленому сервері або на локальному ноутбуці? Ці кроки стосуються сервера. Вам потрібно ssh ваш сервер слідувати крокам. Таким чином, команда буде виконуватися на сервері, навіть якщо ви завершите сеанс ssh.
Sunil Bhoi

2

Почніть команду з nohup: nohup {command} {args...} і часто перенаправляють вихід до файлу: nohup {command} {args...} >{logfile}.

Між іншим nohup запобігає отриманню вашою командою сигналу SIGHUP, який повідомляє, що його батько від'єднано.

Якщо ви знову підключитесь і хочете перевірити вихідні дані, зробіть це tail -f {logfile}.


Дуже дякую. І як я можу знову підключитися, щоб перевірити процес?
mommomonthewind

Переглянути покращену відповідь ...
xenoid

0

Зазвичай я виконую завдання у фоновому режимі та виводити журнал у файли, перевіряючи прогрес, "хвостивши" мої журнали:

$> my_long_task.sh > stdout.log 2> stderr.log &

І коли я хочу перевірити статус, я роблю:

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