나는 항상 9개의 서로 다른 bash 프로세스를 실행하고 있습니다(때때로 더 많은 것을 얻습니다. 예를 들어 현재 37개의 bash 프로세스가 있습니다.).이 문제를 발견했습니다, OP에도 비슷한 문제가 있습니다. 그러나 나는 이것이 중복 이라고 생각하지 않습니다 (이것은 디버깅 방법을 묻기 때문에 내 질문은 직접적인 이유였습니다). 이것을 실행 lsof | grep 'bash.*cwd'
하고 .~
/private/tmp
대답은 그것을 사용해야 한다고 했지만 pstree
사용하지 않았고, 그런 다음 그것을 사용해야 한다고 말했지만 ps aux -H
BSD가 있습니다. ps
여기서 -H는 "불법적인 작업"입니다. 그래서 이것을 설치 pstree
하고 실행했는데 pstree
이것이 내 결과입니다.
-+= 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
내 사용자 이름입니다. 해당 지점에 속하지 않은 항목을 삭제했습니다. 이것은 나에게 많은 것을 알려주지 않으며 다른 질문의 OP와 달리 재부팅해도 사라지지 않습니다. 팬이 매우 시끄러워지고 프로세스가 종료될 수 있지만 잠시 후 다시 돌아올 것이기 때문에 이는 짜증나는 일입니다.
ps aux
출력, CPU를 많이 사용합니다.
avnamn 34737 51,4 0,0 2476312 4832 s000 R+ 1:49am 14:14.28 -bash
top
출력, 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
출력 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
답변1
많은 CPU를 소비하는 쉘 프로세스가 실행 중이라면 그것이 로그인 쉘인지 아니면 쉘 스크립트를 실행하는 프로세스인지 확인해야 합니다. 로그인 과정이 많은 것 같은데, 보통 다른 tty에 9번 로그인하시나요?
pstree는 잘못 행동하는 부모를 찾는 데 도움이 될 수 있습니다. 예를 들어, 나는 ppp 데몬이 즉시 종료되고 계속 다시 시작되는 "나쁜" 쉘을 생성하는 것을 보았습니다.
그러나 쉘은 많은 CPU를 소비합니다. 이는 쉘 스크립트에 문제가 있음을 의미합니다. 비결은 해당 스크립트가 무엇인지 알아내는 것입니다. Linux의 bash에서는 간단합니다. ls -l /proc//fd/10이 스크립트 이름을 알려줄 것입니다. bsd에 이 기능이 있는지는 모르겠습니다.