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%를 쉽게 소모할 수 있습니다. 많은 "globbing"을 사용하면 sh 내장 문자열 패턴 일치 또는 산술을 많이 수행할 수 있을 것 같습니다.

관련 정보