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 内置字符串模式匹配或算术一样。

相关内容