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