SH プロセスが CPU の 50% を使用しています。なぜでしょうか?

SH プロセスが CPU の 50% を使用しています。なぜでしょうか?

CRON を 30 秒ごとに実行していますが、これはプロセスに該当しますか? 誰もシェル スクリプトを実行していないのに、コマンドが CPU の 50% を消費するのはcrondなぜですか?sh

答え1

Cron は、コマンド フィールドに指定されたコマンドを で実行しますsh -c。crontab ファイルで SHELL を設定することで、別のシェルを指定できます。

編集:

明確にするために、sh -cコマンドは cron のサブプロセスとして実行され、指定されたコマンドに応じて他のサブプロセスが生成される場合があります。

答え2

crond私が知っているすべてのシステムでは root として実行されます:

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

これは比較的最近の Arch インストールの場合ですが、古い Slackware でも同じことが言えます。非 root ユーザーが crontab ファイルを作成すると、crond非 root ユーザー ID としてコマンドが実行されます。root 所有権は、長年にわたっていくつかの大きなセキュリティ問題の原因となってきました。

CPU の 50% を使用するという点では、30 秒ごとに何か重い処理を実行すると、簡単に CPU の 50% を消費する可能性があります。大量の「グロビング」や、sh 組み込みの文字列パターン マッチングや算術演算を大量に実行することで、このような状況になると考えられます。

関連情報