2

У меня запущено задание в терминале ssh на внешнем сервере. Я могу приостановить его с помощью CTRL + Z и возобновить с помощью fg . Но я бы хотел сделать паузу, запустить экранный screen -S my_job и вернуть его вперед с помощью fg . Это не работает. Есть ли способ сделать что-то подобное?

Причина в том, что моя работа выполняется довольно долго (1 месяц) и будет работать еще два месяца. Если мой настольный компьютер умрет из-за отключения электроэнергии, моя работа будет убита.

1 ответ1

2

Проблема здесь - управляющий терминал работы. Я не знаю ни одного способа изменить управляющий терминал, что вам нужно было бы сделать, если вы хотите переместить свою программу на экран.

Однако, если ваша работа не имеет важных входных или выходных данных на своих стандартных входах / выходах / ошибках, вы можете рассмотреть встроенную оболочку disown , которая удаляет фоновое задание из таблицы активных заданий. Это подразумевает, что оболочка не будет отправлять задание SIGHUP, когда оно умирает (например, из-за сбоя соединения вашего хоста ssh'ing). Пример:

$ long-running-job
^Z
$ bg
(shell displays backgrounding notification)
$ disown

И ваша работа должна продолжаться. Однако ввод-вывод будет закрыт, так что это не поможет, если у вас есть какие-либо действия с stdin/stdout/stderr.

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