Por que eu tenho 9 processos bash, por que um deles ocupa tanto CPU e como posso pará-los?

2

Eu tenho 9 processos bash diferentes em execução em todos os momentos (às vezes recebo mais, por exemplo, tenho 37 processos bash agora.). Encontrei esta questão , onde o OP teve um problema semelhante. Mas eu não vejo isso como uma duplicata (porque isso pergunta como depurar, minha pergunta é diretamente por que) eu corri este lsof | grep 'bash.*cwd' e ver que eles estavam todos em ~ , exceto um que estava em /private/tmp . / p>

A resposta diz que eu deveria usar pstree , o que eu não tenho e então diz que eu deveria usar ps aux -H , no entanto, eu tenho BSD ps , onde -H é uma "operação ilegal". Então, instalei pstree e executei pstree , e essa foi minha saída

  -+= 00001 root /sbin/launchd
 |-+= 67440 root login -pf avnamn
 | | \--= 96033 avnamn -bash
 | | \--= 99021 avnamn -bash
 |   \-+= 99355 avnamn -bash
 |     \--- 99491 avnamn grep bash
 | \-+- 67441 avnamn -bash
 |   \--- 69408 avnamn -bash
 | \-+- 08457 avnamn -bash
 |   \--- 08513 avnamn -bash
 | \-+- 19936 avnamn -bash
 |   \--- 20053 avnamn -bash
 |-+= 90217 root login -pfl avnamn /bin/bash -c exec -la bash /bin/bash
 | \--- 90218 avnamn -bash
   \--- 20873 avnamn -bash

avnamn é meu nome de usuário. Eu removi coisas que não faziam parte desse ramo. Isso não me diz muito, e ao contrário do OP na outra questão, isso não desaparece quando eu reiniciar. É chato porque faz os meus fãs muito barulhentos, eu posso matar os processos, mas eles voltam depois de um tempo.

ps aux output, com o que usa muita CPU.

avnamn          34737  51,4  0,0  2476312   4832 s000  R+    1:49am  14:14.28 -bash

top output, com o que usa muita CPU.

34737  bash             0.0  15:02.72 1/1   0   17+    4056K+ 0B     0B     34736 34736 running  *0[1+]      0.00000 0.00000    501 1959+     367+    182+        33+        4456+     213005750+ 215920747+  0       0        0.0   avnamn          N/A    N/A   N/A   N/A   N/A   N/A  

Saída de ps -ef | awk ' NR == 1 { header = $0; next } { pid[$2] = $0 } /bash/ { toprint[$2] } END { print header; for (i in toprint) { while (i != 1) { split(pid[i], pieces, " "); i = pieces[3]; toprint[i] } } for (i in toprint) { print pid[i] } }' :

   0 54267     1   0 11:29pm ttys011    0:01.06 login -pf avnnamn
 501 61203 61158   0  6:57pm ttys007    0:00.00 -bash
 501 52955 52582   0 11:22pm ttys010    0:00.00 -bash
   0 54462     1   0  6:22pm ttys003    0:00.02 login -pf avnnamn
   0 61157     1   0  6:57pm ttys007    0:00.02 login -pf avnnamn
   0 15864     1   0  3:02pm ttys005    0:00.02 login -pf avnnamn
 501  8378  8377   0 11:39pm ttys012    3:39.31 -bash
 501  9716     1   0 11:47pm ??         0:00.39 /Applications/Utilities/Terminal.app/Contents/MacOS/Terminal
   0 52581     1   0 11:20pm ttys010    0:01.07 login -pf avnnamn
   0  8495     1   0 11:40pm ttys013    0:01.04 login -pf avnnamn
   0 71228     1   0  7:46pm ttys009    0:00.02 login -pf avnnamn
 501 54268 54267   0 11:29pm ttys011    0:00.03 -bash
 501  9751  9720   0 11:47pm ttys015    0:00.02 -bash
   0  9720  9716   0 11:47pm ttys015    0:01.15 login -pf avnnamn
 501  8496  8495   0 11:40pm ttys013    0:00.02 -bash
 501  8515  8496   0 11:40pm ttys013    0:00.00 -bash
 501 61158 61157   0  6:57pm ttys007    0:00.04 -bash
 501 71229 71228   0  7:46pm ttys009    0:00.08 -bash
   0 59136     1   0  6:46pm ttys004    0:00.03 login -pf avnnamn
   0 59962     1   0  6:50pm ttys006    0:00.02 login -pf avnnamn
 501 52582 52581   0 11:20pm ttys010    0:00.03 -bash
   0  3066     1   0  3:04am ttys000    0:00.13 login -pf avnnamn
 501 55004 54268   0 11:34pm ttys011    0:00.00 -bash
 501 73098 71229   0  7:55pm ttys009    0:00.00 -bash
   0  8377     1   0 11:39pm ttys012    0:01.04 login -pf avnnamn
 501 71202 71201   0  7:46pm ttys008    4:18.90 -bash
   0 28465     1   0 10:52pm ttys001    0:00.01 login -pf avnnamn
   0     1     0   0  2:53am ??         4:12.90 /sbin/launchd
 501  3067  3066   0  3:04am ttys000    0:00.05 -bash
 501  3152  3067   0  3:05am ttys000    0:00.00 -bash
 501  7043  7042   0  3:27am ttys002    0:00.02 -bash
 501  7048  7043   0  3:27am ttys002    0:00.00 -bash
 501 15865 15864   0  3:02pm ttys005    0:00.03 -bash
 501 16395 15865   0  3:05pm ttys005    0:00.00 -bash
 501 28466 28465   0 10:52pm ttys001    0:00.04 -bash
 501 28853 28466   0 10:55pm ttys001    0:00.00 -bash
 501 54463 54462   0  6:22pm ttys003    0:00.05 -bash
 501 54901 54463   0  6:24pm ttys003    0:00.00 -bash
 501 59137 59136   0  6:46pm ttys004    0:00.04 -bash
 501 59142 59137   0  6:46pm ttys004    0:00.00 -bash
 501 59963 59962   0  6:50pm ttys006    0:00.09 -bash
 501 61156 59963   0  6:57pm ttys006    0:00.00 -bash
    
por DisplayName 10.12.2015 / 22:32

1 resposta

0

Se um processo shell está rodando muito CPU, para mim você precisa ver se é um shell de login ou algo rodando um script de shell. Você parece ter muitos processos de login, você normalmente faz login 9 vezes em ttys diferentes?

O pstree pode ajudar a encontrar, digamos, um pai que se comete mal. Por exemplo, eu vi daemons do ppp gerarem shells "ruins" que saem imediatamente e ele continua reiniciando várias vezes.

No entanto, você tem um shell consumindo muita CPU. Isso implica um script de shell que está errado. O truque é descobrir quais são esses scripts. No bash no Linux, o seu simples, ls-l / proc // fd / 10 provavelmente irá dizer-lhe o nome do script. Não tenho certeza se o bsd tem esse recurso.

    
por 26.12.2015 / 11:02