4

Если я вошел в систему на удаленной машине Linux, я знаю, что могу приостановить процесс (cntr-z) и переместить его в фоновый режим (bg 1), но если я отключусь от машины, процесс остановится.

Есть ли способ, которым я могу оставить его в фоновом режиме и иметь его там, когда я снова вхожу в систему? Это очень длительный процесс.

На Ubuntu залогинился через SSH.

2 ответа2

9

Это потому, что вашей программе нужен терминал для запуска, вы можете использовать GNU Screen для создания виртуального терминала, чтобы программа продолжала работать даже после вашего отключения.
просто запустите screen your_program_name , вы можете закрыть экран с помощью crtl-a-d затем снова открыть его с помощью screen -rx

6

Менее гибкие, чем экран, nohup и disown .

nohup - это программа, и вы должны запустить долго работающий jub следующим образом:

$ nohup longjob --options-for-longjob

это приведет к тому, что ваша долгая работа будет выполняться в фоновом режиме и не будет подключена к какому-либо терминалу (что означает, что вы не получите никакого вывода на экран и не сможете напрямую вводить данные с клавиатуры)

disown - это встроенная утилита bash, которая может отключить долго выполняемое задание после его запуска. Моя страница руководства bash говорит

отречься [-ar] [-h] [спецификация работы ...]
Без параметров каждая спецификация заданий удаляется из таблицы активных заданий. Если задана опция -h, каждая спецификация заданий не удаляется из таблицы, а помечается так, что SIGHUP не отправляется заданию, если оболочка получает SIGHUP. Если спецификация заданий отсутствует и не указана ни опция -a, ни опция -r, используется текущее задание. Если спецификация заданий не указана, опция -a означает удалить или отметить все задания; Опция -r без аргумента спецификации задания ограничивает выполнение работ. Возвращаемое значение равно 0, если в задании не указано допустимое задание.

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