Я обслуживаю несколько машин с OS X 10.10, которым требуется cron для различных задач (сторожевые процессы, очистители / tmp и т. Д.). Один из них загадочным образом остановил своего демона cron, и мне кажется, что я не могу восстановить его, если не запустил вручную /usr/sbin/cron
команда как root.
Это на самом деле не обслуживается; мы настолько не доверяем стабильности этих машин, что запланировали несколько поэтапных перезагрузок в crontab, так что кому-то придется ssh
in и перезапускайте cron при каждой перезагрузке.
Я попытался выгрузить и перезагрузить список cron для launchd:
launchctl unload /System/Library/LaunchDaemons/com.vix.cron.plist
launchctl load /System/Library/LaunchDaemons/com.vix.cron.plist
Я думал, что это запустит, но этого не произошло. Затем я попробовал:
launchctl start /System/Library/LaunchDaemons/com.vix.cron.plist
Но это тоже не повлияло. Все еще нет cron
в списке процессов задания cron не выполняются, и launchctl list
говорит - 0 com.vix.cron
.
Переход от cron к чистому launchd - это один из способов обойти это, но это потребует еще большего расхождения нашего кода linux и mac, а также потребует большого тестирования и, откровенно говоря, большего знакомства с launchd.
Поскольку я относительно новичок в OSX, я понятия не имею, что делать дальше. Как заставить cron работать в OSX 10.10 и запускаться при загрузке?
Обновить:
/etc/crontab
существует как пустой файл, но у всех пользователей есть соответствующие crontab в /usr/lib/cron/tabs
. Grep для cron в /var/log/system.log
не дает никаких результатов, кроме sudo cat
вызывается в файлах crontab.
Если я снова запустил эту команду:
launchctl load -w /System/Library/LaunchDaemons/com.vix.cron.plist
Я получаю ошибку Operation already in progress
.
launchd должен запускать cron автоматически, если есть какие-либо контакты - либо глобальный crontab в / etc / crontab, либо вкладки для отдельных пользователей в / usr / lib / cron / tabs / *. Обратите внимание, что он не поддерживает /etc/cron.d/, поэтому, если вы размещаете там свои задания, он ничего не сделает.
Если у вас есть хотя бы один файл в соответствующем месте, но он все еще не запускается, проверьте /var/log/system.log на наличие сообщений об ошибках.