Скажем, у меня есть ноутбук и сервер Ubuntu. Есть тяжелая задача, которую я хочу выполнить на сервере Ubuntu.

До сих пор я подключался к серверу через SSH и выполнял его. Однако, когда мне нужно выключить ноутбук (выходя из офиса), сеанс SSH теряется, и я понятия не имею, что происходит с процессом.

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

3 ответа3

2

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

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

Если вы переподключаетесь и хотите проверить вывод, выполните tail -f {logfile} .

2

Используйте экранную команду на сервере. Вам необходимо установить соответствующий пакет, если он отсутствует на сервере

sudo apt-get install screen
  1. создать экран

    screen
    
  2. выполнить команду, которую вы хотите запустить на этом экране

  3. выйти из экрана, нажав Ctrl + A + D

  4. перечислить экран

    # screen -ls 
    
  5. Теперь вы можете выйти из сеанса SSH, поскольку ваша команда выполняется на экране

  6. ssh снова и прикрепите экран, чтобы проверить статус команды

    screen -r screen_name
    
0

Обычно я запускаю задание в фоновом режиме и записываю данные в файлы, проверяя прогресс, "подхватив" свои журналы:

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

И когда я хочу проверить статус, я делаю:

$> tail stdout.log
$> tail stderr.log

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .