SH 進程使用了 50% 的 CPU,這是為什麼?

SH 進程使用了 50% 的 CPU,這是為什麼?

我每 30 秒運行一次 CRON,但這屬於該crond過程,對嗎?sh當沒有人執行 Shell 腳本時,為什麼指令會佔用我 50% 的 CPU?

答案1

Cron 將使用 運行命令欄位中指定的命令sh -c。您可以透過在 crontab 檔案中設定 SHELL 來指定另一個 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 執行命令。多年來,根所有權一直是導致幾個重大安全問題的原因。

就使用 50% 的 CPU 而言,每 30 秒運行一次重量級任務很容易就會消耗 50% 的 CPU。我認為,大量的“globbing”可以做到這一點,就像進行大量 sh 內建字串模式匹配或算術一樣。

相關內容