Der SH-Prozess nutzt 50 % der CPU. Warum ist das so?

Der SH-Prozess nutzt 50 % der CPU. Warum ist das so?

Ich lasse CRON alle 30 Sekunden laufen, aber das würde doch unter den crondProzess fallen, oder? Warum shbeansprucht der Befehl 50 % meiner CPU, wenn niemand ein Shell-Skript ausführt?

Antwort1

Cron führt den im Befehlsfeld angegebenen Befehl mit aus sh -c. Sie können eine andere Shell angeben, indem Sie SHELL in der Crontab-Datei festlegen.

BEARBEITEN:

Nur zur Klarstellung: Der sh -cBefehl wird als Unterprozess von cron ausgeführt, wodurch je nach eingegebenem Befehl möglicherweise andere Unterprozesse entstehen.

Antwort2

crondläuft als Root auf jedem mir bekannten System:

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

Das ist bei einer ziemlich aktuellen Arch-Installation der Fall, aber eine ältere Slackware sagt dasselbe. Wenn Sie als Nicht-Root-Benutzer eine Crontab-Datei zusammenstellen, crondwerden die Befehle als Ihre Nicht-Root-Benutzer-ID ausgeführt. Der Root-Besitz war im Laufe der Jahre die Ursache mehrerer schwerwiegender Sicherheitsprobleme.

Was die 50%ige Nutzung einer CPU angeht, könnte die Ausführung einer schweren Aufgabe alle 30 Sekunden leicht 50% einer CPU verbrauchen. Ich denke, das könnte durch viel „Globbing“ erreicht werden, ebenso wie durch viel sh-integriertes String-Mustervergleichen oder Arithmetik.

verwandte Informationen