NBash

Форк
0
44 строки · 2.6 Кб
1
Либо создаем зомби через Bash:
2

3
(sleep 1 & exec /bin/sleep 7200) &
4

5
Выполняем команды и наблюдаем zombie процесс:
6

7
ps aux | grep Z
8

9
Вывод на экран:
10

11
root 1669051 Z 14:09 0:00 [zombie] <defunct>
12

13
Ага, хорошо, зомби завели. Теперь как это дело всё закилить. Простой kill -9 PID не поможет, так как PID родительского процесса будет отличаться от дочернего.
14

15
Чтобы найти PID родителя, смотрим:
16

17
ps ax | grep zombie
18

19
Кто-то грепает по слову defunct, тут уже по потребностям выбирай.
20

21
Видим все PIDы и родителя и дочернего:
22

23
1669050 S+ 0:00 ./zombie
24
1669051 Z+ 0:00 [zombie] <defunct>
25

26
В моем случае PID родительского = 1669050, а дочернего 1669051, который собственно и есть зомбик.
27

28
Теперь накидываем однострочник:
29

30
kill -9 $(ps -A -o stat,ppid | grep -e '[zZ]'| awk '{ print $2 }')
31

32
Эта штука найдет все зомби процессы и уничтожит их. Даже не нужно никакие циклы на Bash колхозить.
33

34
А если требуется регулярно зачищать зомборей, вешаем однострочник на cron и радуемся.
35

36
Вообще это самый простой способ закилить эту каку. Как это сделать через gdb напишу на следующей неделе. Но сразу предупреждают, там оверхед решение и скорее всего оно тебе не понравится. Хотя через gdb можно оставить в живых родительский процесс и убить только дочерних зомбаков.
37

38
В большинстве случаев не стоит обращать внимание на этих зомбаков, эти процессы не жрут ресурсы, а являются лишь косяками программного обеспечения. 
39

40
У меня зомбаки порой случались с nginx на древней CentOS, но после апгрейда на убунту, все прошло.
41

42
Если сможешь что-то еще добавить, пиши в комменты, будет всем полезно.
43

44
Давай, хороших выходных, не болей!
45

46

47

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.