Посмотреть / Подсчитать, сколько дочерних оболочек было открыто скриптом

#shell #memory-leaks #windows-subsystem-for-linux #wsl-2 #subshell

#оболочка #утечки памяти #windows-subsystem-for-linux #wsl-2 #вложенная оболочка

Вопрос:

У меня возникла головоломка со сценарием (или возможной утечкой памяти wsl2).

Я запускаю большой скрипт (для цикла требуется 0,67 секунды)

Моя проблема в том, что время цикла медленно увеличивается, как и использование памяти, поэтому с 0,67 секунды / 0,9 гигабайта памяти до 1,20 секунды / 1,7 гигабайта через несколько часов.

Если я перезапущусь (stop / start), скорость снова увеличится, а использование памяти снова снизится до 0,9..

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

о, я запускаю это на win10 Wsl2 Ubuntu

Ответ №1:

Запустите ps и покажите только идентификаторы родительских процессов и идентификаторы процессов. Передайте выходные данные в awk, установив переменную pid на заданный идентификатор родительского процесса. Где первое поле, разделенное пробелом (идентификатор родительского процесса), равно переданному pid, выведите идентификатор процесса (поле 2)

 ps -eo ppid,pid | awk -v pid=<pid> '$1==pid { print $2 }'
 

Комментарии:

1. Я не совсем понял все это (на самом деле ничего), но если я заменяю pid на pid запущенного скрипта, что должно отображаться? все подоболочки, которые создаются сценарием (pid, который я написал)?

2. Да. Только идентификаторы дочернего (подпроцесса), связанные с переданным идентификатором родительского процесса (pid)