У меня CRON запускается каждые 30 секунд, но это подпадает под crond
процесс, верно? Почему sh
команда потребляет 50% моего процессора, когда никто не запускает Shell Script?
решение1
Cron выполнит команду, указанную в поле команды, используя sh -c
. Вы можете указать другую оболочку, установив SHELL в файле crontab.
РЕДАКТИРОВАТЬ:
Для ясности: 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 стало причиной нескольких серьезных проблем безопасности за эти годы.
Что касается использования 50% ресурсов ЦП, запуск чего-то тяжелого каждые 30 секунд может легко потреблять 50% ресурсов ЦП. Я думаю, что много "глоббинга" могли бы сделать это, как и много встроенных в sh сопоставлений шаблонов строк или арифметики.