Linux - общение с процессом? присоединиться к процессу в действии? - PullRequest
1 голос
/ 25 мая 2009

Я чувствую себя несколько глупо, спрашивая об этом, но я относительно новичок в Linux (больше с точки зрения опыта, чем времени), и я всегда удивлялся, могу ли я «воссоединиться» (мой собственный термин) процесс, пока он работает.

Например, если я настрою игровой сервер или IRC-бот eggdrop для запуска в фоновом режиме, есть ли команда, которую я могу использовать, чтобы просмотреть этот процесс в действии и просмотреть весь вывод, который он выводит на консоль?

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

Спасибо.

Ответы [ 4 ]

5 голосов
/ 25 мая 2009

Отладчики могут"подключаться" к запущенным процессам, но вам может быть лучше запустить вашу программу в screen (что позволяет вам отсоединять и подключать к терминалу довольно естественным образом ).


Там могут быть какие-то хорошие вещи, хорошие вещи в:

2 голосов
/ 25 мая 2009

Простой ответ:

>> ./runmyserver
<press ctrl-z>
>> bg
>> ...do something else ...
>> fg

Вы также можете начать в фоновом режиме с:

>> ./runmyserver &

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

Также обратите внимание, что ctrl-z будет на самом деле приостанавливать ваш сервер до bg, поэтому, если на нем играют люди, он может пропустить удар, лучше всего сделать это быстро.

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

РЕДАКТИРОВАТЬ: перечитайте ваш вопрос. Похоже, вы могли бы по крайней мере получить вывод, используя перенаправление в файл. Это не позволит вам добавить больше информации:

./runmyserver > log.txt
2 голосов
/ 25 мая 2009

Можете ли вы быть более конкретным? Вы просто говорите о фоновом процессе в текущем сеансе, а затем возвращаете его на передний план.

например:.

doLongTask &

# Later

fg %3

3 в этом примере - номер задания этого экземпляра doLongTask. Вы можете просмотреть все запущенные задания с помощью:

jobs

Но учтите, что это все еще только позволит вам увидеть, что выводится на консоль. И.Е. stdout и stderr, за вычетом любых перенаправлений.

0 голосов
/ 26 мая 2009

Если вы заранее знаете, что хотите это сделать, используйте screen (1) и запустите сервер на переднем плане в сеансе экрана. Вы сможете отсоединиться от сеанса экрана и продолжить процесс. Затем вы можете позже снова присоединить ваш сеанс экрана и просмотреть любой вывод, который он сделал с тех пор, вплоть до размера буфера прокрутки.

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