Можно ли забрать запущенное приложение с терминала?

Когда-нибудь мне нужно запустить приложение из терминала для отладки. Если я уверен, что ошибка произойдет коротко после запуска приложения, я могу запустить это приложение из терминала.

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

Могу ли я взять приложение с терминала, которое не было запущено с помощью терминала? Если да, то как?

26
задан 1 September 2011 в 15:21

32 ответа

Каждый процесс в Linux имеет специальный каталог /proc/{pid}/fd/. 0 - stdin, 1 - stdout и 2 - stderr. Итак, предполагая, что вас интересует только диагностический вывод, вы можете определить процесс pid, а затем в терминале:

, чтобы увидеть stdout:

cat /proc/{pid of process}/fd/1

, чтобы увидеть stderr: [ ! d2]

cat /proc/{pid of process}/fd/2
29
ответ дан 25 May 2018 в 19:03
  • 1
    Этот ответ наиболее поучителен. Благодарю. – Benjamin 2 September 2011 в 13:10
  • 2
    ОК, я немного смущен, когда я запускаю cat /proc/1840/fd/1, кажется, что возвращает результат от других процессов, чем тот, который я взял. (1840 в настоящее время для Skype в соответствии с системным монитором). Он также показывает выход других программ ...: | – Benjamin 4 September 2011 в 19:13

Каждый процесс в Linux имеет специальный каталог /proc/{pid}/fd/. 0 - stdin, 1 - stdout и 2 - stderr. Итак, предполагая, что вас интересует только диагностический вывод, вы можете определить процесс pid, а затем в терминале:

, чтобы увидеть stdout:

cat /proc/{pid of process}/fd/1

, чтобы увидеть stderr: [ ! d2] cat /proc/{pid of process}/fd/2

29
ответ дан 25 July 2018 в 21:22

Каждый процесс в Linux имеет специальный каталог /proc/{pid}/fd/. 0 - stdin, 1 - stdout и 2 - stderr. Итак, предполагая, что вас интересует только диагностический вывод, вы можете определить процесс pid, а затем в терминале:

, чтобы увидеть stdout:

cat /proc/{pid of process}/fd/1

, чтобы увидеть stderr: [ ! d2] cat /proc/{pid of process}/fd/2

29
ответ дан 31 July 2018 в 10:33

Каждый процесс в Linux имеет специальный каталог /proc/{pid}/fd/. 0 - stdin, 1 - stdout и 2 - stderr. Итак, предполагая, что вас интересует только диагностический вывод, вы можете определить процесс pid, а затем в терминале:

, чтобы увидеть stdout:

cat /proc/{pid of process}/fd/1

, чтобы увидеть stderr: [ ! d2] cat /proc/{pid of process}/fd/2

29
ответ дан 31 July 2018 в 11:35

Каждый процесс в Linux имеет специальный каталог /proc/{pid}/fd/. 0 - stdin, 1 - stdout и 2 - stderr. Итак, предполагая, что вас интересует только диагностический вывод, вы можете определить процесс pid, а затем в терминале:

, чтобы увидеть stdout:

cat /proc/{pid of process}/fd/1

, чтобы увидеть stderr: [ ! d2] cat /proc/{pid of process}/fd/2

29
ответ дан 2 August 2018 в 03:02

Каждый процесс в Linux имеет специальный каталог /proc/{pid}/fd/. 0 - stdin, 1 - stdout и 2 - stderr. Итак, предполагая, что вас интересует только диагностический вывод, вы можете определить процесс pid, а затем в терминале:

, чтобы увидеть stdout:

cat /proc/{pid of process}/fd/1

, чтобы увидеть stderr: [ ! d2] cat /proc/{pid of process}/fd/2

29
ответ дан 4 August 2018 в 18:52

Каждый процесс в Linux имеет специальный каталог /proc/{pid}/fd/. 0 - stdin, 1 - stdout и 2 - stderr. Итак, предполагая, что вас интересует только диагностический вывод, вы можете определить процесс pid, а затем в терминале:

, чтобы увидеть stdout:

cat /proc/{pid of process}/fd/1

, чтобы увидеть stderr: [ ! d2] cat /proc/{pid of process}/fd/2

29
ответ дан 6 August 2018 в 03:15

Каждый процесс в Linux имеет специальный каталог /proc/{pid}/fd/. 0 - stdin, 1 - stdout и 2 - stderr. Итак, предполагая, что вас интересует только диагностический вывод, вы можете определить процесс pid, а затем в терминале:

, чтобы увидеть stdout:

cat /proc/{pid of process}/fd/1

, чтобы увидеть stderr: [ ! d2] cat /proc/{pid of process}/fd/2

29
ответ дан 7 August 2018 в 20:56

Или вы можете использовать strace, как это

sudo strace -p $pid_of_the_process
9
ответ дан 25 May 2018 в 19:03

Вы можете прикрепить gdb к выполняемому процессу.

Синтаксис:

gdb program pid

Хорошо, вы не можете видеть исходный код, если информация об отладке лишена, что является по умолчанию для развернутых приложений. Но вы можете увидеть сообщения stdout / stderr и debugger, segfaults.

6
ответ дан 25 May 2018 в 19:03
  • 1
    Я пробовал, но это не сработало. Например, System Monitor показывает, что Cairo-Dock ID равен 1452, поэтому я запускаю gdb program 1452 (я также пытался gdb 1452), но он возвращает " 1452: Нет такого файла или каталога. & Quot; – Benjamin 4 September 2011 в 19:07
  • 2
    Первый должен работать. Что он вернулся? – enzotib 4 September 2011 в 19:13
  • 3
    Это то, что он возвращает полностью после запроса pid 1840 (Skype): GNU gdb (Ubuntu/Linaro 7.2-1ubuntu11) 7.2 Copyright (C) 2010 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "i686-linux-gnu". For bug reporting instructions, please see: <http://www.gnu.org/software/gdb/bugs/>... 1840: No such file or directory. – Benjamin 4 September 2011 в 21:50
  • 4
    Я сказал первый, что с gdb program pid. Я думаю, что вы показали, что вы показываете gdb pid – enzotib 5 September 2011 в 02:08
  • 5
    Извините моя ошибка. `gdb program 3385 (снова Skype) возвращает этот . – Benjamin 5 September 2011 в 13:21

Вероятно, вы ищете retty. Вы также можете найти «attach tty». В основном это делается с помощью ptrace, чтобы вы могли даже свернуть свой.

5
ответ дан 25 May 2018 в 19:03

Или вы можете использовать strace, как это

sudo strace -p $pid_of_the_process
9
ответ дан 25 July 2018 в 21:22

Вы можете прикрепить gdb к выполняемому процессу.

Синтаксис:

gdb program pid

Хорошо, вы не можете видеть исходный код, если информация об отладке лишена, что является по умолчанию для развернутых приложений. Но вы можете увидеть сообщения stdout / stderr и debugger, segfaults.

6
ответ дан 25 July 2018 в 21:22
  • 1
    Я пробовал, но это не сработало. Например, System Monitor показывает, что Cairo-Dock ID равен 1452, поэтому я запускаю gdb program 1452 (я также пытался gdb 1452), но он возвращает & quot; 1452: Нет такого файла или каталога. & Quot; – Benjamin 4 September 2011 в 19:07
  • 2
    Первый должен работать. Что он вернулся? – enzotib 4 September 2011 в 19:13
  • 3
    Это то, что он возвращает полностью после запроса pid 1840 (Skype): GNU gdb (Ubuntu/Linaro 7.2-1ubuntu11) 7.2 Copyright (C) 2010 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "i686-linux-gnu". For bug reporting instructions, please see: <http://www.gnu.org/software/gdb/bugs/>... 1840: No such file or directory. – Benjamin 4 September 2011 в 21:50
  • 4
    Я сказал первый, что с gdb program pid. Я думаю, что вы показали, что вы показываете gdb pid – enzotib 5 September 2011 в 02:08
  • 5
    Извините моя ошибка. `gdb program 3385 (снова Skype) возвращает этот . – Benjamin 5 September 2011 в 13:21

Вероятно, вы ищете retty. Вы также можете найти «attach tty». В основном это делается с помощью ptrace, чтобы вы могли даже свернуть свой.

5
ответ дан 25 July 2018 в 21:22

Или вы можете использовать strace, как это

sudo strace -p $pid_of_the_process
9
ответ дан 31 July 2018 в 10:33

Вы можете прикрепить gdb к выполняемому процессу.

Синтаксис:

gdb program pid

Хорошо, вы не можете видеть исходный код, если информация об отладке лишена, что является по умолчанию для развернутых приложений. Но вы можете увидеть сообщения stdout / stderr и debugger, segfaults.

6
ответ дан 31 July 2018 в 10:33
  • 1
    Я пробовал, но это не сработало. Например, System Monitor показывает, что Cairo-Dock ID равен 1452, поэтому я запускаю gdb program 1452 (я также пытался gdb 1452), но он возвращает & quot; 1452: Нет такого файла или каталога. & Quot; – Benjamin 4 September 2011 в 19:07
  • 2
    Первый должен работать. Что он вернулся? – enzotib 4 September 2011 в 19:13
  • 3
    Это то, что он возвращает полностью после запроса pid 1840 (Skype): GNU gdb (Ubuntu/Linaro 7.2-1ubuntu11) 7.2 Copyright (C) 2010 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "i686-linux-gnu". For bug reporting instructions, please see: <http://www.gnu.org/software/gdb/bugs/>... 1840: No such file or directory. – Benjamin 4 September 2011 в 21:50
  • 4
    Я сказал первый, что с gdb program pid. Я думаю, что вы показали, что вы показываете gdb pid – enzotib 5 September 2011 в 02:08
  • 5
    Извините моя ошибка. `gdb program 3385 (снова Skype) возвращает этот . – Benjamin 5 September 2011 в 13:21

Вероятно, вы ищете retty. Вы также можете найти «attach tty». В основном это делается с помощью ptrace, чтобы вы могли даже свернуть свой.

5
ответ дан 31 July 2018 в 10:33

Или вы можете использовать strace, как это

sudo strace -p $pid_of_the_process
9
ответ дан 31 July 2018 в 11:35

Вы можете прикрепить gdb к выполняемому процессу.

Синтаксис:

gdb program pid

Хорошо, вы не можете видеть исходный код, если информация об отладке лишена, что является по умолчанию для развернутых приложений. Но вы можете увидеть сообщения stdout / stderr и debugger, segfaults.

6
ответ дан 31 July 2018 в 11:35
  • 1
    Я пробовал, но это не сработало. Например, System Monitor показывает, что Cairo-Dock ID равен 1452, поэтому я запускаю gdb program 1452 (я также пытался gdb 1452), но он возвращает & quot; 1452: Нет такого файла или каталога. & Quot; – Benjamin 4 September 2011 в 19:07
  • 2
    Первый должен работать. Что он вернулся? – enzotib 4 September 2011 в 19:13
  • 3
    Это то, что он возвращает полностью после запроса pid 1840 (Skype): GNU gdb (Ubuntu/Linaro 7.2-1ubuntu11) 7.2 Copyright (C) 2010 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "i686-linux-gnu". For bug reporting instructions, please see: <http://www.gnu.org/software/gdb/bugs/>... 1840: No such file or directory. – Benjamin 4 September 2011 в 21:50
  • 4
    Я сказал первый, что с gdb program pid. Я думаю, что вы показали, что вы показываете gdb pid – enzotib 5 September 2011 в 02:08
  • 5
    Извините моя ошибка. `gdb program 3385 (снова Skype) возвращает этот . – Benjamin 5 September 2011 в 13:21

Вероятно, вы ищете retty. Вы также можете найти «attach tty». В основном это делается с помощью ptrace, чтобы вы могли даже свернуть свой.

5
ответ дан 31 July 2018 в 11:35

Или вы можете использовать strace, как это

sudo strace -p $pid_of_the_process
9
ответ дан 2 August 2018 в 03:02

Вы можете прикрепить gdb к выполняемому процессу.

Синтаксис:

gdb program pid

Хорошо, вы не можете видеть исходный код, если информация об отладке лишена, что является по умолчанию для развернутых приложений. Но вы можете увидеть сообщения stdout / stderr и debugger, segfaults.

6
ответ дан 2 August 2018 в 03:02
  • 1
    Я пробовал, но это не сработало. Например, System Monitor показывает, что Cairo-Dock ID равен 1452, поэтому я запускаю gdb program 1452 (я также пытался gdb 1452), но он возвращает & quot; 1452: Нет такого файла или каталога. & Quot; – Benjamin 4 September 2011 в 19:07
  • 2
    Первый должен работать. Что он вернулся? – enzotib 4 September 2011 в 19:13
  • 3
    Это то, что он возвращает полностью после запроса pid 1840 (Skype): GNU gdb (Ubuntu/Linaro 7.2-1ubuntu11) 7.2 Copyright (C) 2010 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "i686-linux-gnu". For bug reporting instructions, please see: <http://www.gnu.org/software/gdb/bugs/>... 1840: No such file or directory. – Benjamin 4 September 2011 в 21:50
  • 4
    Я сказал первый, что с gdb program pid. Я думаю, что вы показали, что вы показываете gdb pid – enzotib 5 September 2011 в 02:08
  • 5
    Извините моя ошибка. `gdb program 3385 (снова Skype) возвращает этот . – Benjamin 5 September 2011 в 13:21

Вероятно, вы ищете retty. Вы также можете найти «attach tty». В основном это делается с помощью ptrace, чтобы вы могли даже свернуть свой.

5
ответ дан 2 August 2018 в 03:02

Или вы можете использовать strace, как это

sudo strace -p $pid_of_the_process
9
ответ дан 4 August 2018 в 18:52

Вы можете прикрепить gdb к выполняемому процессу.

Синтаксис:

gdb program pid

Хорошо, вы не можете видеть исходный код, если информация об отладке лишена, что является по умолчанию для развернутых приложений. Но вы можете увидеть сообщения stdout / stderr и debugger, segfaults.

6
ответ дан 4 August 2018 в 18:52
  • 1
    Я пробовал, но это не сработало. Например, System Monitor показывает, что Cairo-Dock ID равен 1452, поэтому я запускаю gdb program 1452 (я также пытался gdb 1452), но он возвращает & quot; 1452: Нет такого файла или каталога. & Quot; – Benjamin 4 September 2011 в 19:07
  • 2
    Первый должен работать. Что он вернулся? – enzotib 4 September 2011 в 19:13
  • 3
    Это то, что он возвращает полностью после запроса pid 1840 (Skype): GNU gdb (Ubuntu/Linaro 7.2-1ubuntu11) 7.2 Copyright (C) 2010 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "i686-linux-gnu". For bug reporting instructions, please see: <http://www.gnu.org/software/gdb/bugs/>... 1840: No such file or directory. – Benjamin 4 September 2011 в 21:50
  • 4
    Я сказал первый, что с gdb program pid. Я думаю, что вы показали, что вы показываете gdb pid – enzotib 5 September 2011 в 02:08
  • 5
    Извините моя ошибка. `gdb program 3385 (снова Skype) возвращает этот . – Benjamin 5 September 2011 в 13:21

Вероятно, вы ищете retty. Вы также можете найти «attach tty». В основном это делается с помощью ptrace, чтобы вы могли даже свернуть свой.

5
ответ дан 4 August 2018 в 18:52

Или вы можете использовать strace, как это

sudo strace -p $pid_of_the_process
9
ответ дан 6 August 2018 в 03:15

Вы можете прикрепить gdb к выполняемому процессу.

Синтаксис:

gdb program pid

Хорошо, вы не можете видеть исходный код, если информация об отладке лишена, что является по умолчанию для развернутых приложений. Но вы можете увидеть сообщения stdout / stderr и debugger, segfaults.

6
ответ дан 6 August 2018 в 03:15
  • 1
    Я пробовал, но это не сработало. Например, System Monitor показывает, что Cairo-Dock ID равен 1452, поэтому я запускаю gdb program 1452 (я также пытался gdb 1452), но он возвращает & quot; 1452: Нет такого файла или каталога. & Quot; – Benjamin 4 September 2011 в 19:07
  • 2
    Первый должен работать. Что он вернулся? – enzotib 4 September 2011 в 19:13
  • 3
    Это то, что он возвращает полностью после запроса pid 1840 (Skype): GNU gdb (Ubuntu/Linaro 7.2-1ubuntu11) 7.2 Copyright (C) 2010 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "i686-linux-gnu". For bug reporting instructions, please see: <http://www.gnu.org/software/gdb/bugs/>... 1840: No such file or directory. – Benjamin 4 September 2011 в 21:50
  • 4
    Я сказал первый, что с gdb program pid. Я думаю, что вы показали, что вы показываете gdb pid – enzotib 5 September 2011 в 02:08
  • 5
    Извините моя ошибка. `gdb program 3385 (снова Skype) возвращает этот . – Benjamin 5 September 2011 в 13:21

Вероятно, вы ищете retty. Вы также можете найти «attach tty». В основном это делается с помощью ptrace, чтобы вы могли даже свернуть свой.

5
ответ дан 6 August 2018 в 03:15

Или вы можете использовать strace, как это

sudo strace -p $pid_of_the_process
9
ответ дан 7 August 2018 в 20:56

Другие вопросы по тегам:

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