Как запустить остановленный процесс в Linux - PullRequest
5 голосов
/ 10 мая 2011

У меня остановлен процесс в Linux на данном терминале. Сейчас я нахожусь в другом терминале. Как мне начать этот процесс. Какой сигнал убийства я бы отправил. Я владею этим процессом.

Ответы [ 2 ]

8 голосов
/ 10 мая 2011

Вы можете выдать pid kill -CONT, который будет делать то, что вы хотите, пока другой сеанс терминала все еще существует.Если другой сеанс мертв, он может не иметь места для вывода.

4 голосов
/ 10 мая 2011

В дополнение к ответу @ Dave, существует расширенный метод для перенаправления файловых дескрипторов ввода и вывода запущенной программы с использованием GDB.

Пример FreeBSD для произвольного сценария оболочки сPID 4711:

> gdb /bin/sh 4711
...
Attaching to program: /bin/sh, process 4711
...
(gdb) p close(1)
$1 = 0
(gdb) p creat("/tmp/testout.txt",0644)
$2 = 1
(gdb) p close(2)
$3 = 0
(gdb) p dup2(1,2)
$4 = 2

EDIT - объяснение: закрывается файловый дескриптор 1, затем открывается файл, который повторно использует 1. Затем он закрывает файловый дескриптор 2 и дублирует файловый дескриптор 1 до 2.

Теперь этот процесс 'stdout и stderr идут к указанному файлу и доступны для чтения оттуда.Если требуется stdin, вам нужно p close(0) и затем приложить какой-нибудь входной файл или PIPE или что-то в этом роде.

В настоящее время я не могу найти способ удаленного disown этого процесса изуправляющий терминал, что означает, что при выходе из терминала этот процесс получает сигнал SIGHUP.

Примечание: Если у вас есть доступ к другому терминалу или вы получаете его, вы можете disown -aтак что этот процесс будет продолжать выполняться после закрытия терминала.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...