Я выполняю следующую команду на моем сервере Ubuntu
root@slot13:~# lxc-stop --name pavan --logfile=test1.txt --logpriority=trace
Кажется, висит бесконечно. Всякий раз, когда это происходило в AIX, я просто получал PID процесса-нарушителя и говорил:
$ procstack <pid_of_stuck_process>
и раньше он показывал весь стек вызовов этого процесса. Есть ли эквивалент procstack
в Linux / Ubuntu?
/proc/pid/wchan
иWCHAN
столбец вps -l
выводе илиps -o wchan
для верхней части этого стека. (этаps
часть работает во многих Unices, но не всегда (часто) полезна сама по себе).В большинстве систем Unix вы можете использовать GDB .
Там также
pstack
(не стандартная утилита, вам, вероятно, придется установить ее вручную). Это выглядит как эквивалент AIXprocstack
. Но на моем Debian wheezy amd64 он, похоже, всегда выдает ошибку. На i386 для программы, скомпилированной без отладочных символов, она не печатает никаких символов, даже из библиотек, для которых доступны отладочные символы.Вы также можете использовать
strace -p1234
для просмотра системных вызовов, выполняемых процессом.источник
pstack
Кажется, выдает ошибки каждый раз. Нечто подобноеroot@sarai:~# pstack 6312 6312: /usr/bin/python /usr/bin/twistd -n --uid=maas --gid=maas --pidfile=/run/maas-pserv.pid --logfile=/dev/null maas-pserv --conf... (No symbols found) crawl: Input/output error Error tracing through process 6312
pstack
похоже, не работает на amd64, я наблюдаю то же самое на Debian wheezy amd64.pstack
выведет для вас трассировку стека запущенного процесса.gstack
является общим эквивалентом, еслиpstack
он недоступен / не поддерживает ваш дистрибутив / архив.источник