Поскольку вы говорите, что можете редактировать сам скрипт, просто введите:
ps -ef >/tmp/bash_stack_trace.$$
в нем, где возникает проблема.
В этом каталоге tmp
будет создано несколько файлов, в которых будет показан весь список процессов в тот момент, когда это произошло.
Затем вы можете определить, какой процесс вызвал какой другой процесс, изучив этот вывод. Это можно сделать вручную или автоматизировать с помощью чего-то вроде awk
, поскольку выходные данные являются регулярными - вы просто используете эти столбцы PID
и PPID
, чтобы установить отношения между всеми интересующими вас процессами.
Вам нужно будет следить за файлами, так как вы будете получать по одному на процесс, поэтому им, возможно, придется управлять. Так как это нужно делать только во время отладки, большую часть времени эта строка будет закомментирована (перед #
), поэтому файлы не будут созданы.
Чтобы очистить их, вы можете просто сделать:
rm /tmp/bash_stack_trace.*