Ich lasse CRON alle 30 Sekunden laufen, aber das würde doch unter den crond
Prozess fallen, oder? Warum sh
beansprucht 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 -c
Befehl wird als Unterprozess von cron ausgeführt, wodurch je nach eingegebenem Befehl möglicherweise andere Unterprozesse entstehen.
Antwort2
crond
lä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, crond
werden 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.