LINUX.ORG.RU

нет

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

Себестоимость сего действия, это примерно 3 ваши зарплаты за всю жизнь :-)

MKuznetsov ★★★★★
()
Ответ на: комментарий от MKuznetsov

А можно как то другим способом его отладить зависон при условии что скрипт можно перезапускать. И ждать пока он снова повиснет.

sniper21 ★★★★★
() автор топика
Последнее исправление: sniper21 (всего исправлений: 1)
Ответ на: комментарий от sniper21

А можно как то другим способом его отладить зависон при условии что скрипт можно перезапускать. И ждать пока он снова повиснет.

у вас что, только возможность перезапуска «черного ящика» и нет доступа к самому скрипту ? иначе можно было давно принтов-логов напихать и во всём разобраться

если нет исходников и возможности исправлять ошибку, то нахрена её лоцировать - довольно знать что ошибка есть и соотв.железяку(сервис,фреймворк) использовать нельзя

MKuznetsov ★★★★★
()

Где удалённо?

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

Если скрипт в контейнере, то надо сгенерить свой базовый имидж на основе Python-овского, где Python будет компилироваться с отладочной информацией, и в образ должен быть включен gdb. Также надо запускать контейнер в привилегированном режиме, иначе не удастся подключиться к процессу.

Хотя, наверное, можно запускать gdb и снаружи контейнера, я не пробовал, на всякий случай сразу добавил в контейнер.

emorozov
()

Есть паразит, как выше предложили, но у меня он тупо крашил пистон без всякого выхлопа. Вроде pygdb умеет аттач, но сам не пробовал. Ну и зависит от того как и где оно запущено. А то можно например снять снапшот всего процесса через criu, процесс грохнуть и перезапустить, а снапшот унести домой разбирать без стресса. Либо сохранить стейт вм с теми же целями. Хз, нужны какие-нибудь начальные условия что за процесс и где он крутится

upcFrost ★★★★★
()
Ответ на: комментарий от emorozov

Если есть возможность подключиться по ssh

тогда проще начать с изучения журналов, состояния /proc и запуска под strace - 99.9% что «скрипт» чё-то ждёт и хочет прочитать или записать. То есть для нормальной работы нехвататило какого-то чахлого файла или привелегий. С матом пополам можно разобраться

MKuznetsov ★★★★★
()
Ответ на: комментарий от cobold

Просто gdb ничего не даст, т.к. без отладочной информации почти невозможно понять в каком месте и из-за чего завис именно Python код.

Надо, чтобы скрипт был запущен под интерпретатором, скомпилированным с отладочной информацией.

emorozov
()

Удаленность, если есть вход по ssh, вообще не влияет. Если входа нет то все хуже.

Можно плясать с gdb, можно просто обвешать скрипт отладочной печатью в лог и посмотреть в логе что происходит. Правда на это уйдет несколько запусков.

AntonI ★★★★
()
Ответ на: комментарий от cobold

В приличных дистрибутивах можно поставить пакет с отладочными символами

Увы, это мало помогает, когда зависает скрипт в докере. А в базовых образах Python с докер хаба он ставится не из дистра, а компилируется при билде образа.

emorozov
()