Как узнать то, что процесс пишет в STDOUT?

Использование попытки:

 startx -- vt0

См. также этот Unix. Вопрос о SE относительно startx и Fedora.

19
03.07.2014, 01:54
2 ответа

В Linux, предполагая, что вы хотите знать, что записывается на тот же самый ресурс, к которому подключен stdout вашей оболочки, вы можете сделать:

strace -fe write $(lsof -t "/proc/$$/fd/1" | sed 's/^/-p/')

, что сообщит о системных вызовах write() (на любом файловом дескрипторе) каждого процесса, у которого хотя бы один файловый дескриптор открыт на том же самом файле, что и fd 1 вашей оболочки.

17
27.01.2020, 19:44

Вы можете остановить обработку обоих запросов, отправив им SIGSTOP (заменить pid1 и pid2 на фактические PIDs или использовать killall и имя приложения):

kill -SIGSTOP pid1 pid2

Печать на терминале (или в любое другое место, куда перенаправляется stdout) должна быть остановлена. Затем продолжите один из них, используя

kill -SIGCONT pid1

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

Перед тем, как убить остановленный процесс, полезно отправить первый СИГКОНТ.

Эта же техника может быть использована с Ctrl-Z и управляет заданием оболочки (fg %1, bg %1, kill %1, ...).

24
27.01.2020, 19:44

Теги

Похожие вопросы