SH 프로세스가 CPU의 50%를 사용하고 있는데, 이유는 무엇입니까?

SH 프로세스가 CPU의 50%를 사용하고 있는데, 이유는 무엇입니까?

30초마다 CRON을 실행하는데 그게 프로세스 범위 crond죠? sh쉘 스크립트를 실행하는 사람이 없는데 왜 명령이 내 CPU의 50%를 차지합니까?

답변1

Cron은 실행 명령 필드에 지정된 명령을 사용합니다 sh -c. crontab 파일에서 SHELL을 설정하여 다른 쉘을 지정할 수 있습니다.

편집하다:

명확히 하기 위해 이 sh -c명령은 주어진 명령을 기반으로 다른 하위 프로세스를 생성할 수 있는 cron의 하위 프로세스로 실행됩니다.

답변2

crond익숙한 모든 시스템에서 루트로 실행합니다.

1016 % ps -ef | grep crond 
root       342     1  0 12:37 ?        00:00:00 /usr/sbin/crond

이것은 상당히 최신 Arch 설치에 있지만 이전 Slackware에서는 동일한 내용을 말합니다. 루트가 아닌 사용자로 crontab 파일을 작성한 경우 crond명령은 루트가 아닌 사용자 ID로 실행됩니다. 루트 소유권은 수년에 걸쳐 여러 가지 중요한 보안 문제의 원인이었습니다.

CPU를 50% 사용한다는 측면에서 볼 때, 30초마다 무거운 작업을 실행하면 CPU의 50%를 쉽게 소모할 수 있습니다. 나는 sh의 내장 문자열 패턴 일치 또는 산술을 많이 수행하는 것처럼 많은 "globbing"이 트릭을 수행할 것이라고 생각합니다.

관련 정보