[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"page-ru-/guides/linux/cron-guide":3,"mdc--njwiaz-key":639,"mdc-y7s2ck-key":665,"mdc-9aa727-key":689,"mdc-rlupjh-key":735,"mdc--a61qrb-key":765,"mdc-n0drli-key":805,"mdc-6fnyy4-key":834,"mdc--jekzjh-key":859,"mdc-zg7d2b-key":890,"mdc--4bdmo1-key":907,"related-/guides/linux/crontab-guide,/guides/linux/systemd-timers-guide,/errors/linux/cron-permission-denied":929},{"id":4,"title":5,"appliesTo":6,"author":11,"body":12,"canonical":571,"code":80,"createdAt":572,"description":573,"difficulty":574,"draft":575,"estimatedTime":576,"extension":577,"faq":578,"howToSteps":591,"howToTotalTime":610,"image":571,"keywords":611,"locale":620,"meta":621,"navigation":140,"path":622,"platform":623,"related":624,"section":628,"seo":629,"severity":80,"stem":630,"summary":631,"tags":632,"twitterCreator":571,"twitterSite":571,"type":637,"updatedAt":572,"__hash__":638},"content_ru/guides/linux/cron-guide.md","Полный гайд по настройке заданий cron в Linux",[7,8,9,10],"Ubuntu 20.04","Ubuntu 22.04","Debian 11","CentOS 8","FixPedia Team",{"type":13,"value":14,"toc":559},"minimark",[15,20,24,28,64,67,71,74,95,98,161,164,184,187,203,210,214,217,230,238,255,259,262,270,280,286,289,293,296,312,315,329,332,344,347,351,354,392,395,407,410,414,458,462,465,492,495,499,545,555],[16,17,19],"h2",{"id":18},"введение-зачем-это-нужно","Введение / Зачем это нужно",[21,22,23],"p",{},"Cron — это стандартный планировщик задач в Linux, который позволяет автоматически выполнять скрипты или команды в заданное время. С его помощью можно автоматизировать резервное копирование, обновление системных логов, отправку уведомлений и многие другие рутинные операции. После выполнения этого гайда вы сможете настраивать как простые, так и сложные задания, а также быстро устранять типичные ошибки.",[16,25,27],{"id":26},"требования-подготовка","Требования / Подготовка",[29,30,31,35,43,50],"ul",{},[32,33,34],"li",{},"Любая современная дистрибутива Linux (Ubuntu, Debian, CentOS, Fedora и др.).",[32,36,37,38,42],{},"Права суперпользователя (",[39,40,41],"code",{},"sudo","), чтобы устанавливать службы и редактировать системные таблицы.",[32,44,45,46,49],{},"Установленный пакет ",[39,47,48],{},"cron"," (обычно уже присутствует в базовой системе).",[32,51,52,53,56,57,56,60,63],{},"Текстовый редактор в терминале (",[39,54,55],{},"nano",", ",[39,58,59],{},"vim",[39,61,62],{},"emacs",").",[65,66],"in-article-ad",{},[16,68,70],{"id":69},"шаг-1-установка-и-проверка-службы-cron","Шаг 1: Установка и проверка службы cron",[21,72,73],{},"Убедитесь, что cron уже установлен в системе:",[75,76,81],"pre",{"className":77,"code":78,"language":79,"meta":80,"style":80},"language-bash shiki shiki-themes github-light github-dark","cron --version\n","bash","",[39,82,83],{"__ignoreMap":80},[84,85,88,91],"span",{"class":86,"line":87},"line",1,[84,89,48],{"class":90},"sScJk",[84,92,94],{"class":93},"sj4cs"," --version\n",[21,96,97],{},"Если команда не найдена, установите пакет в зависимости от дистрибутива:",[75,99,101],{"className":77,"code":100,"language":79,"meta":80,"style":80},"# Debian/Ubuntu\nsudo apt update && sudo apt install cron\n\n# RHEL/CentOS\nsudo yum install cronie\n",[39,102,103,109,135,142,148],{"__ignoreMap":80},[84,104,105],{"class":86,"line":87},[84,106,108],{"class":107},"sJ8bj","# Debian/Ubuntu\n",[84,110,112,114,118,121,125,127,129,132],{"class":86,"line":111},2,[84,113,41],{"class":90},[84,115,117],{"class":116},"sZZnC"," apt",[84,119,120],{"class":116}," update",[84,122,124],{"class":123},"sVt8B"," && ",[84,126,41],{"class":90},[84,128,117],{"class":116},[84,130,131],{"class":116}," install",[84,133,134],{"class":116}," cron\n",[84,136,138],{"class":86,"line":137},3,[84,139,141],{"emptyLinePlaceholder":140},true,"\n",[84,143,145],{"class":86,"line":144},4,[84,146,147],{"class":107},"# RHEL/CentOS\n",[84,149,151,153,156,158],{"class":86,"line":150},5,[84,152,41],{"class":90},[84,154,155],{"class":116}," yum",[84,157,131],{"class":116},[84,159,160],{"class":116}," cronie\n",[21,162,163],{},"После установки активируйте и запустите службу:",[75,165,167],{"className":77,"code":166,"language":79,"meta":80,"style":80},"sudo systemctl enable --now cron\n",[39,168,169],{"__ignoreMap":80},[84,170,171,173,176,179,182],{"class":86,"line":87},[84,172,41],{"class":90},[84,174,175],{"class":116}," systemctl",[84,177,178],{"class":116}," enable",[84,180,181],{"class":93}," --now",[84,183,134],{"class":116},[21,185,186],{},"Проверьте, что служба работает:",[75,188,190],{"className":77,"code":189,"language":79,"meta":80,"style":80},"sudo systemctl status cron\n",[39,191,192],{"__ignoreMap":80},[84,193,194,196,198,201],{"class":86,"line":87},[84,195,41],{"class":90},[84,197,175],{"class":116},[84,199,200],{"class":116}," status",[84,202,134],{"class":116},[21,204,205,206,209],{},"Если служба активна, вы увидите статус ",[39,207,208],{},"активен (работает)",".",[16,211,213],{"id":212},"шаг-2-открытие-таблицы-crontab","Шаг 2: Открытие таблицы crontab",[21,215,216],{},"Для настройки заданий, которые будут выполняться от вашего имени, откройте таблицу crontab:",[75,218,220],{"className":77,"code":219,"language":79,"meta":80,"style":80},"crontab -e\n",[39,221,222],{"__ignoreMap":80},[84,223,224,227],{"class":86,"line":87},[84,225,226],{"class":90},"crontab",[84,228,229],{"class":93}," -e\n",[21,231,232,233,56,235,237],{},"Система предложит выбрать текстовый редактор (",[39,234,55],{},[39,236,59],{}," и т.д.). В этом файле хранятся все задания cron для текущего пользователя.",[239,240,241],"blockquote",{},[21,242,243,244,248,249,251,252,209],{},"💡 ",[245,246,247],"strong",{},"Совет:"," Если редактор не установлен, сначала установите ",[39,250,55],{},": ",[39,253,254],{},"sudo apt install nano",[16,256,258],{"id":257},"шаг-3-добавление-нового-задания","Шаг 3: Добавление нового задания",[21,260,261],{},"Правила заданий cron состоят из пяти полей, разделённых пробелами, за которыми следует команда:",[75,263,268],{"className":264,"code":266,"language":267},[265],"language-text","* * * * * команда\n| | | | |\n| | | | +----- день недели (0–7, 0 и 7 — воскресенье)\n| | | +------- месяц (1–12)\n| | +--------- день месяца (1–31)\n| +----------- час (0–23)\n+------------- минута (0–59)\n","text",[39,269,266],{"__ignoreMap":80},[21,271,272,275,276,279],{},[245,273,274],{},"Пример:"," Запланировать выполнение скрипта ",[39,277,278],{},"/home/user/scripts/backup.sh"," ежедневно в 03:00 ночи:",[75,281,284],{"className":282,"code":283,"language":267},[265],"0 3 * * * /home/user/scripts/backup.sh\n",[39,285,283],{"__ignoreMap":80},[21,287,288],{},"Добавьте эту строку в таблицу crontab, сохраните файл и выйдите из редактора. Cron автоматически применит новые правила.",[16,290,292],{"id":291},"шаг-4-перезапуск-cron-и-проверка","Шаг 4: Перезапуск cron и проверка",[21,294,295],{},"Перезапустите демо́н, чтобы гарантировать применение изменений:",[75,297,299],{"className":77,"code":298,"language":79,"meta":80,"style":80},"sudo systemctl restart cron\n",[39,300,301],{"__ignoreMap":80},[84,302,303,305,307,310],{"class":86,"line":87},[84,304,41],{"class":90},[84,306,175],{"class":116},[84,308,309],{"class":116}," restart",[84,311,134],{"class":116},[21,313,314],{},"Проверьте статус службы ещё раз:",[75,316,317],{"className":77,"code":189,"language":79,"meta":80,"style":80},[39,318,319],{"__ignoreMap":80},[84,320,321,323,325,327],{"class":86,"line":87},[84,322,41],{"class":90},[84,324,175],{"class":116},[84,326,200],{"class":116},[84,328,134],{"class":116},[21,330,331],{},"Убедитесь, что задание появилось в вашей таблице:",[75,333,335],{"className":77,"code":334,"language":79,"meta":80,"style":80},"crontab -l\n",[39,336,337],{"__ignoreMap":80},[84,338,339,341],{"class":86,"line":87},[84,340,226],{"class":90},[84,342,343],{"class":93}," -l\n",[21,345,346],{},"Если строка отображается, планировщик принял задание.",[16,348,350],{"id":349},"шаг-5-тестирование-задания","Шаг 5: Тестирование задания",[21,352,353],{},"Для быстрой проверки работоспособности добавьте временное задание, которое будет запускаться каждую минуту:",[75,355,357],{"className":77,"code":356,"language":79,"meta":80,"style":80},"* * * * * /usr/bin/echo \"тест $(date)\" >> /tmp/cron.log\n",[39,358,359],{"__ignoreMap":80},[84,360,361,365,368,370,372,374,377,380,383,386,389],{"class":86,"line":87},[84,362,364],{"class":363},"szBVR","*",[84,366,367],{"class":363}," *",[84,369,367],{"class":363},[84,371,367],{"class":363},[84,373,367],{"class":363},[84,375,376],{"class":123}," /usr/bin/echo ",[84,378,379],{"class":116},"\"тест $(",[84,381,382],{"class":90},"date",[84,384,385],{"class":116},")\"",[84,387,388],{"class":363}," >>",[84,390,391],{"class":123}," /tmp/cron.log\n",[21,393,394],{},"Через минуту проверьте содержимое файла:",[75,396,398],{"className":77,"code":397,"language":79,"meta":80,"style":80},"cat /tmp/cron.log\n",[39,399,400],{"__ignoreMap":80},[84,401,402,405],{"class":86,"line":87},[84,403,404],{"class":90},"cat",[84,406,391],{"class":116},[21,408,409],{},"Если вывод содержит строку с датой, задание cron работает корректно.",[16,411,413],{"id":412},"шаг-6-дополнительные-советы-и-системные-задания","Шаг 6: Дополнительные советы и системные задания",[29,415,416,430,436,445],{},[32,417,418,421,422,425,426,429],{},[245,419,420],{},"Глобальные задания:"," Для настройки заданий, доступных всем пользователям, отредактируйте файл ",[39,423,424],{},"/etc/crontab"," или создайте файл в директории ",[39,427,428],{},"/etc/cron.d/"," с указанием пользователя перед командой.",[32,431,432,435],{},[245,433,434],{},"Используйте абсолютные пути:"," Всегда указывайте полный путь к скриптам, чтобы избежать ошибок при изменении текущей директории.",[32,437,438,441,442,63],{},[245,439,440],{},"Установите права доступа:"," Убедитесь, что скрипты исполняемы (",[39,443,444],{},"chmod +x /path/to/script.sh",[32,446,447,450,451,454,455,209],{},[245,448,449],{},"Настройка окружения:"," Если скрипту нужны переменные окружения, добавьте их перед командой, например ",[39,452,453],{},"SHELL=/bin/bash"," или ",[39,456,457],{},"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin",[16,459,461],{"id":460},"проверка-результата","Проверка результата",[21,463,464],{},"После выполнения всех шагов проверьте:",[466,467,468,474,480,483],"ol",{},[32,469,470,471,209],{},"Служба cron активна: ",[39,472,473],{},"sudo systemctl is-active cron",[32,475,476,477,209],{},"Ваше задание отображается: ",[39,478,479],{},"crontab -l",[32,481,482],{},"Скрипт был запущен в ожидаемое время (проверьте лог-файл или вывод скрипта).",[32,484,485,486,488,489,209],{},"Системные задания (из ",[39,487,424],{},") также активны: ",[39,490,491],{},"grep -r \"^\\*\\/\" /etc/crontab",[21,493,494],{},"Если все пункты выполнены, планировщик работает как надо.",[16,496,498],{"id":497},"возможные-проблемы","Возможные проблемы",[29,500,501,510,520,530],{},[32,502,503,506,507,509],{},[245,504,505],{},"Задание не выполняется:"," Проверьте синтаксис таблицы crontab (",[39,508,479],{},"), убедитесь, что скрипт исполняем и использует абсолютный путь.",[32,511,512,515,516,519],{},[245,513,514],{},"Ошибка «команда не найдена»:"," Укажите полный путь к исполняемому файлу, иначе cron ищет его в системном ",[39,517,518],{},"PATH",", который может отличаться.",[32,521,522,525,526,529],{},[245,523,524],{},"Нет журналов:"," Включите логгирование заданий, добавив ",[39,527,528],{},"MAILTO=your@email.com"," в таблицу crontab, чтобы получать уведомления о запуске.",[32,531,532,535,536,539,540,454,542,209],{},[245,533,534],{},"Проблемы с правами:"," Если задание создано root, но должно выполняться от имени другого пользователя, используйте синтаксис ",[39,537,538],{},"username"," в ",[39,541,428],{},[39,543,544],{},"sudo -u username команда",[21,546,547,548,56,551,554],{},"Не стесняйтесь обращаться к документации cron (",[39,549,550],{},"man crontab",[39,552,553],{},"man cron",") для более глубокого понимания настроек.",[556,557,558],"style",{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}",{"title":80,"searchDepth":111,"depth":111,"links":560},[561,562,563,564,565,566,567,568,569,570],{"id":18,"depth":111,"text":19},{"id":26,"depth":111,"text":27},{"id":69,"depth":111,"text":70},{"id":212,"depth":111,"text":213},{"id":257,"depth":111,"text":258},{"id":291,"depth":111,"text":292},{"id":349,"depth":111,"text":350},{"id":412,"depth":111,"text":413},{"id":460,"depth":111,"text":461},{"id":497,"depth":111,"text":498},null,"2026-08-09 09:03:55","Научитесь настраивать задания cron в Linux за 10 минут. Пошаговая инструкция с примерами, ошибками и советами для автоматизации задач.","medium",false,"10-15 мин","md",[579,582,585,588],{"question":580,"answer":581},"Как просмотреть текущие задания cron?","Выполните команду `crontab -l`, чтобы отобразить таблицу текущего пользователя, или `sudo crontab -l` для просмотра системных заданий.",{"question":583,"answer":584},"Как создать задание cron, которое будет запускать скрипт ежедневно в 2 утра?","Добавьте строку `0 2 * * * /path/to/script.sh` в таблицу crontab с помощью редактора `crontab -e`.",{"question":586,"answer":587},"Почему cron не запускает мой скрипт?","Проверьте права на скрипт (`chmod +x`), путь (`абсолютный путь`), а также журналы `cron` (`journalctl -u cron` или `/var/log/syslog`).",{"question":589,"answer":590},"Как настроить задание, которое работает от имени другого пользователя?","Используйте синтаксис `MAILTO`, `SHELL` или создайте файл в `/etc/cron.d/` с указанием пользователя перед командой.",[592,595,598,601,604,607],{"name":593,"text":594},"Установка и проверка службы cron","Убедитесь, что cron установлен (`cron --version`). Если пакет отсутствует, установите его: `sudo apt install cron` (Debian/Ubuntu) или `sudo yum install cronie` (RHEL/CentOS). Запустите службу: `sudo systemctl enable --now cron`.",{"name":596,"text":597},"Открытие таблицы crontab","Откройте таблицу редактором по умолчанию: `crontab -e`. Система предложит выбрать редактор (`nano`, `vim` и т.д.). В этой таблице хранятся все задания для текущего пользователя.",{"name":599,"text":600},"Добавление нового задания","Добавьте строку, например `0 3 * * * /home/user/scripts/backup.sh`. Используйте синтаксис cron: `* * * * * команда`. Сохраните и выйдите из редактора.",{"name":602,"text":603},"Перезапуск cron и проверка","Перезапустите демо́н: `sudo systemctl restart cron`. Проверьте статус: `sudo systemctl status cron`. Убедитесь, что задание появилось: `crontab -l`.",{"name":605,"text":606},"Тестирование задания","Для немедленного теста добавьте задание с интервалом несколько минут, например `* * * * * /usr/bin/echo \"тест\" >> /tmp/cron.log`. Проверьте файл журнала через минуту.",{"name":608,"text":609},"Дополнительные советы и системные задания","Для глобальных заданий отредактируйте файл `/etc/crontab` или создайте файл в `/etc/cron.d/` с указанием пользователя. Используйте скрипты с абсолютными путями и проверьте их права доступа.","PT15M",[612,613,614,615,616,617,618,619],"как настроить cron","таблица crontab","задание cron","планировщик cron Linux","редактировать crontab","cron не работает","код ошибки cron","автоматизация задач Linux","ru_RU",{},"/guides/linux/cron-guide","linux",[625,626,627],"/guides/linux/crontab-guide","/guides/linux/systemd-timers-guide","/errors/linux/cron-permission-denied","Гайды Linux",{"title":5,"description":573},"guides/linux/cron-guide","В этом гайде вы узнаете, как настроить планировщик cron в Linux, добавлять и редактировать задания, а также устранять распространённые ошибки. После выполнения инструкции вы сможете автоматизировать рутинные задачи.",[48,633,634,635,636],"Linux","планирование","автоматизация","системный админ","guide","dfuFOCcxNz2H4Zq5TksrUIo-sKRH4aPJOfgPH_xdYWY",{"data":640,"body":641},{},{"type":642,"children":643},"root",[644],{"type":645,"tag":21,"props":646,"children":647},"element",{},[648,650,655,657,663],{"type":267,"value":649},"Выполните команду ",{"type":645,"tag":39,"props":651,"children":653},{"className":652},[],[654],{"type":267,"value":479},{"type":267,"value":656},", чтобы отобразить таблицу текущего пользователя, или ",{"type":645,"tag":39,"props":658,"children":660},{"className":659},[],[661],{"type":267,"value":662},"sudo crontab -l",{"type":267,"value":664}," для просмотра системных заданий.",{"data":666,"body":667},{},{"type":642,"children":668},[669],{"type":645,"tag":21,"props":670,"children":671},{},[672,674,680,682,688],{"type":267,"value":673},"Добавьте строку ",{"type":645,"tag":39,"props":675,"children":677},{"className":676},[],[678],{"type":267,"value":679},"0 2 * * * /path/to/script.sh",{"type":267,"value":681}," в таблицу crontab с помощью редактора ",{"type":645,"tag":39,"props":683,"children":685},{"className":684},[],[686],{"type":267,"value":687},"crontab -e",{"type":267,"value":209},{"data":690,"body":691},{},{"type":642,"children":692},[693],{"type":645,"tag":21,"props":694,"children":695},{},[696,698,704,706,712,714,719,721,727,728,734],{"type":267,"value":697},"Проверьте права на скрипт (",{"type":645,"tag":39,"props":699,"children":701},{"className":700},[],[702],{"type":267,"value":703},"chmod +x",{"type":267,"value":705},"), путь (",{"type":645,"tag":39,"props":707,"children":709},{"className":708},[],[710],{"type":267,"value":711},"абсолютный путь",{"type":267,"value":713},"), а также журналы ",{"type":645,"tag":39,"props":715,"children":717},{"className":716},[],[718],{"type":267,"value":48},{"type":267,"value":720}," (",{"type":645,"tag":39,"props":722,"children":724},{"className":723},[],[725],{"type":267,"value":726},"journalctl -u cron",{"type":267,"value":454},{"type":645,"tag":39,"props":729,"children":731},{"className":730},[],[732],{"type":267,"value":733},"/var/log/syslog",{"type":267,"value":63},{"data":736,"body":737},{},{"type":642,"children":738},[739],{"type":645,"tag":21,"props":740,"children":741},{},[742,744,750,751,757,759,764],{"type":267,"value":743},"Используйте синтаксис ",{"type":645,"tag":39,"props":745,"children":747},{"className":746},[],[748],{"type":267,"value":749},"MAILTO",{"type":267,"value":56},{"type":645,"tag":39,"props":752,"children":754},{"className":753},[],[755],{"type":267,"value":756},"SHELL",{"type":267,"value":758}," или создайте файл в ",{"type":645,"tag":39,"props":760,"children":762},{"className":761},[],[763],{"type":267,"value":428},{"type":267,"value":429},{"data":766,"body":767},{},{"type":642,"children":768},[769],{"type":645,"tag":21,"props":770,"children":771},{},[772,774,780,782,788,790,796,798,804],{"type":267,"value":773},"Убедитесь, что cron установлен (",{"type":645,"tag":39,"props":775,"children":777},{"className":776},[],[778],{"type":267,"value":779},"cron --version",{"type":267,"value":781},"). Если пакет отсутствует, установите его: ",{"type":645,"tag":39,"props":783,"children":785},{"className":784},[],[786],{"type":267,"value":787},"sudo apt install cron",{"type":267,"value":789}," (Debian/Ubuntu) или ",{"type":645,"tag":39,"props":791,"children":793},{"className":792},[],[794],{"type":267,"value":795},"sudo yum install cronie",{"type":267,"value":797}," (RHEL/CentOS). Запустите службу: ",{"type":645,"tag":39,"props":799,"children":801},{"className":800},[],[802],{"type":267,"value":803},"sudo systemctl enable --now cron",{"type":267,"value":209},{"data":806,"body":807},{},{"type":642,"children":808},[809],{"type":645,"tag":21,"props":810,"children":811},{},[812,814,819,821,826,827,832],{"type":267,"value":813},"Откройте таблицу редактором по умолчанию: ",{"type":645,"tag":39,"props":815,"children":817},{"className":816},[],[818],{"type":267,"value":687},{"type":267,"value":820},". Система предложит выбрать редактор (",{"type":645,"tag":39,"props":822,"children":824},{"className":823},[],[825],{"type":267,"value":55},{"type":267,"value":56},{"type":645,"tag":39,"props":828,"children":830},{"className":829},[],[831],{"type":267,"value":59},{"type":267,"value":833}," и т.д.). В этой таблице хранятся все задания для текущего пользователя.",{"data":835,"body":836},{},{"type":642,"children":837},[838],{"type":645,"tag":21,"props":839,"children":840},{},[841,843,849,851,857],{"type":267,"value":842},"Добавьте строку, например ",{"type":645,"tag":39,"props":844,"children":846},{"className":845},[],[847],{"type":267,"value":848},"0 3 * * * /home/user/scripts/backup.sh",{"type":267,"value":850},". Используйте синтаксис cron: ",{"type":645,"tag":39,"props":852,"children":854},{"className":853},[],[855],{"type":267,"value":856},"* * * * * команда",{"type":267,"value":858},". Сохраните и выйдите из редактора.",{"data":860,"body":861},{},{"type":642,"children":862},[863],{"type":645,"tag":21,"props":864,"children":865},{},[866,868,874,876,882,884,889],{"type":267,"value":867},"Перезапустите демо́н: ",{"type":645,"tag":39,"props":869,"children":871},{"className":870},[],[872],{"type":267,"value":873},"sudo systemctl restart cron",{"type":267,"value":875},". Проверьте статус: ",{"type":645,"tag":39,"props":877,"children":879},{"className":878},[],[880],{"type":267,"value":881},"sudo systemctl status cron",{"type":267,"value":883},". Убедитесь, что задание появилось: ",{"type":645,"tag":39,"props":885,"children":887},{"className":886},[],[888],{"type":267,"value":479},{"type":267,"value":209},{"data":891,"body":892},{},{"type":642,"children":893},[894],{"type":645,"tag":21,"props":895,"children":896},{},[897,899,905],{"type":267,"value":898},"Для немедленного теста добавьте задание с интервалом несколько минут, например ",{"type":645,"tag":39,"props":900,"children":902},{"className":901},[],[903],{"type":267,"value":904},"* * * * * /usr/bin/echo \"тест\" >> /tmp/cron.log",{"type":267,"value":906},". Проверьте файл журнала через минуту.",{"data":908,"body":909},{},{"type":642,"children":910},[911],{"type":645,"tag":21,"props":912,"children":913},{},[914,916,921,922,927],{"type":267,"value":915},"Для глобальных заданий отредактируйте файл ",{"type":645,"tag":39,"props":917,"children":919},{"className":918},[],[920],{"type":267,"value":424},{"type":267,"value":758},{"type":645,"tag":39,"props":923,"children":925},{"className":924},[],[926],{"type":267,"value":428},{"type":267,"value":928}," с указанием пользователя. Используйте скрипты с абсолютными путями и проверьте их права доступа.",[930],{"id":931,"title":932,"appliesTo":933,"author":11,"body":938,"canonical":571,"code":1428,"createdAt":1429,"description":1430,"difficulty":1431,"draft":575,"estimatedTime":1432,"extension":577,"faq":1433,"howToSteps":1443,"howToTotalTime":1456,"image":571,"keywords":1457,"locale":620,"meta":1466,"navigation":140,"path":627,"platform":623,"related":1467,"section":1471,"seo":1472,"severity":574,"stem":1473,"summary":1474,"tags":1475,"twitterCreator":571,"twitterSite":571,"type":1479,"updatedAt":1429,"__hash__":1480},"content_ru/errors/linux/cron-permission-denied.md","Cron Permission Denied в Linux: причины и быстрое решение",[934,935,936,937],"Ubuntu 22.04/24.04","Debian 11/12","RHEL 8/9","CentOS 7/8",{"type":13,"value":939,"toc":1417},[940,944,960,966,970,1017,1021,1026,1029,1045,1056,1071,1083,1087,1100,1103,1154,1157,1189,1191,1195,1202,1235,1238,1254,1264,1268,1274,1277,1295,1306,1320,1327,1356,1362,1366,1414],[16,941,943],{"id":942},"что-означает-ошибка-permission-denied-в-cron","Что означает ошибка Permission denied в cron",[21,945,946,947,950,951,953,954,454,957,209],{},"Ошибка ",[39,948,949],{},"Permission denied"," (код завершения 126 или 1) появляется, когда служба ",[39,952,48],{}," пытается выполнить запланированную задачу, но операционная система блокирует доступ к файлу, директории или ресурсу. В отчётах вы увидите строки вроде ",[39,955,956],{},"/bin/sh: 1: /path/to/script.sh: Permission denied",[39,958,959],{},"Failed to execute: Permission denied",[21,961,962,963,965],{},"Планировщик работает в фоне, от имени конкретного пользователя, без интерактивного терминала и с ограниченным набором переменных окружения. Если скрипт или файл вывода требует прав, которых у демона ",[39,964,48],{}," нет, выполнение прерывается сразу на старте.",[16,967,969],{"id":968},"причины-возникновения","Причины возникновения",[466,971,972,978,990,996,1002],{},[32,973,974,977],{},[245,975,976],{},"Отсутствует бит выполнения"," у самого скрипта. Файл может быть доступен для чтения, но не помечен как исполняемый.",[32,979,980,983,984,986,987,989],{},[245,981,982],{},"Использование относительных путей"," в crontab или внутри bash-скрипта. ",[39,985,48],{}," не наследует стандартный ",[39,988,518],{}," из вашего профиля.",[32,991,992,995],{},[245,993,994],{},"Неверные права владельца на логи или временные файлы",", куда скрипт пытается писать данные.",[32,997,998,1001],{},[245,999,1000],{},"Жёсткие политики безопасности"," (SELinux, AppArmor), которые блокируют запуск нестандартных бинарников или доступ к определённым каталогам.",[32,1003,1004,1010,1011,1013,1014,1016],{},[245,1005,1006,1007,1009],{},"Попытка запуска задачи из системного ",[39,1008,226],{}," без указания пользователя",". В ",[39,1012,424],{}," и ",[39,1015,428],{}," требуется явное указание имени пользователя перед командой.",[16,1018,1020],{"id":1019},"способы-решения","Способы решения",[1022,1023,1025],"h3",{"id":1024},"способ-1-назначение-прав-на-выполнение-файла","Способ 1: Назначение прав на выполнение файла",[21,1027,1028],{},"Проверьте текущие права на ваш скрипт:",[75,1030,1032],{"className":77,"code":1031,"language":79,"meta":80,"style":80},"ls -l /opt/scripts/backup.sh\n",[39,1033,1034],{"__ignoreMap":80},[84,1035,1036,1039,1042],{"class":86,"line":87},[84,1037,1038],{"class":90},"ls",[84,1040,1041],{"class":93}," -l",[84,1043,1044],{"class":116}," /opt/scripts/backup.sh\n",[21,1046,1047,1048,1051,1052,1055],{},"Если в первой колонке нет символа ",[39,1049,1050],{},"x"," (например, ",[39,1053,1054],{},"-rw-r--r--","), добавьте его:",[75,1057,1059],{"className":77,"code":1058,"language":79,"meta":80,"style":80},"chmod +x /opt/scripts/backup.sh\n",[39,1060,1061],{"__ignoreMap":80},[84,1062,1063,1066,1069],{"class":86,"line":87},[84,1064,1065],{"class":90},"chmod",[84,1067,1068],{"class":116}," +x",[84,1070,1044],{"class":116},[239,1072,1073],{},[21,1074,1075,1076,454,1079,1082],{},"💡 Совет: Убедитесь, что интерпретатор, указанный в шебанге (",[39,1077,1078],{},"#!/bin/bash",[39,1080,1081],{},"#!/usr/bin/env python3","), также доступен для чтения и выполнения пользователю, от имени которого запускается задача.",[1022,1084,1086],{"id":1085},"способ-2-замена-относительных-путей-на-абсолютные","Способ 2: Замена относительных путей на абсолютные",[21,1088,1089,1091,1092,1095,1096,1099],{},[39,1090,48],{}," запускает команды в пустом окружении. Если в crontab написано ",[39,1093,1094],{},"backup.sh"," или в скрипте используется ",[39,1097,1098],{},"./config.ini",", система не найдёт файл или откажет в доступе к текущей директории.",[21,1101,1102],{},"Замените все пути на полные:",[75,1104,1106],{"className":77,"code":1105,"language":79,"meta":80,"style":80},"# Неправильно для cron\n0 2 * * * my_script.sh\n\n# Правильно\n0 2 * * * /usr/local/bin/my_script.sh\n",[39,1107,1108,1113,1130,1134,1139],{"__ignoreMap":80},[84,1109,1110],{"class":86,"line":87},[84,1111,1112],{"class":107},"# Неправильно для cron\n",[84,1114,1115,1118,1121,1123,1125,1127],{"class":86,"line":111},[84,1116,1117],{"class":90},"0",[84,1119,1120],{"class":93}," 2",[84,1122,367],{"class":93},[84,1124,367],{"class":93},[84,1126,367],{"class":93},[84,1128,1129],{"class":116}," my_script.sh\n",[84,1131,1132],{"class":86,"line":137},[84,1133,141],{"emptyLinePlaceholder":140},[84,1135,1136],{"class":86,"line":144},[84,1137,1138],{"class":107},"# Правильно\n",[84,1140,1141,1143,1145,1147,1149,1151],{"class":86,"line":150},[84,1142,1117],{"class":90},[84,1144,1120],{"class":93},[84,1146,367],{"class":93},[84,1148,367],{"class":93},[84,1150,367],{"class":93},[84,1152,1153],{"class":116}," /usr/local/bin/my_script.sh\n",[21,1155,1156],{},"Внутри самого скрипта явно указывайте полные пути к утилитам:",[75,1158,1160],{"className":77,"code":1159,"language":79,"meta":80,"style":80},"#!/bin/bash\n/usr/bin/rsync -avz /home/user/data /mnt/backup\n/usr/sbin/logrotate /etc/logrotate.d/myapp\n",[39,1161,1162,1167,1181],{"__ignoreMap":80},[84,1163,1164],{"class":86,"line":87},[84,1165,1166],{"class":107},"#!/bin/bash\n",[84,1168,1169,1172,1175,1178],{"class":86,"line":111},[84,1170,1171],{"class":90},"/usr/bin/rsync",[84,1173,1174],{"class":93}," -avz",[84,1176,1177],{"class":116}," /home/user/data",[84,1179,1180],{"class":116}," /mnt/backup\n",[84,1182,1183,1186],{"class":86,"line":137},[84,1184,1185],{"class":90},"/usr/sbin/logrotate",[84,1187,1188],{"class":116}," /etc/logrotate.d/myapp\n",[65,1190],{},[1022,1192,1194],{"id":1193},"способ-3-настройка-прав-доступа-к-логам-и-рабочим-директориям","Способ 3: Настройка прав доступа к логам и рабочим директориям",[21,1196,1197,1198,1201],{},"Частая причина ошибки — попытка записать вывод команды (",[39,1199,1200],{},">> /var/log/cron.log",") в каталог, где у пользователя нет прав на запись. Cron запускает задачи от имени владельца crontab, поэтому целевые директории должны принадлежать ему:",[75,1203,1205],{"className":77,"code":1204,"language":79,"meta":80,"style":80},"sudo chown -R user:user /var/log/myapp\nsudo chmod 755 /var/log/myapp\n",[39,1206,1207,1223],{"__ignoreMap":80},[84,1208,1209,1211,1214,1217,1220],{"class":86,"line":87},[84,1210,41],{"class":90},[84,1212,1213],{"class":116}," chown",[84,1215,1216],{"class":93}," -R",[84,1218,1219],{"class":116}," user:user",[84,1221,1222],{"class":116}," /var/log/myapp\n",[84,1224,1225,1227,1230,1233],{"class":86,"line":111},[84,1226,41],{"class":90},[84,1228,1229],{"class":116}," chmod",[84,1231,1232],{"class":93}," 755",[84,1234,1222],{"class":116},[21,1236,1237],{},"Если вы используете перенаправление вывода в crontab:",[75,1239,1242],{"className":1240,"code":1241,"language":48,"meta":80,"style":80},"language-cron shiki shiki-themes github-light github-dark","# Запускаем как пользователь www-data, логируем ошибки\n*/15 * * * * www-data /usr/local/bin/fetch-data.sh >> /var/log/myapp/fetch.log 2>&1\n",[39,1243,1244,1249],{"__ignoreMap":80},[84,1245,1246],{"class":86,"line":87},[84,1247,1248],{},"# Запускаем как пользователь www-data, логируем ошибки\n",[84,1250,1251],{"class":86,"line":111},[84,1252,1253],{},"*/15 * * * * www-data /usr/local/bin/fetch-data.sh >> /var/log/myapp/fetch.log 2>&1\n",[21,1255,1256,1257,1260,1261,209],{},"Проверьте, что каталог ",[39,1258,1259],{},"/var/log/myapp"," существует и доступен для записи пользователю ",[39,1262,1263],{},"www-data",[1022,1265,1267],{"id":1266},"способ-4-проверка-политик-безопасности-apparmor-selinux","Способ 4: Проверка политик безопасности (AppArmor / SELinux)",[21,1269,1270,1271,1273],{},"В современных дистрибутивах стандартные права ",[39,1272,1065],{}," могут быть недостаточными. Если система защищена AppArmor (Ubuntu/Debian) или SELinux (RHEL/Alma/Rocky), они могут молча блокировать выполнение.",[21,1275,1276],{},"Проверьте статус AppArmor:",[75,1278,1280],{"className":77,"code":1279,"language":79,"meta":80,"style":80},"aa-status | grep my_script.sh\n",[39,1281,1282],{"__ignoreMap":80},[84,1283,1284,1287,1290,1293],{"class":86,"line":87},[84,1285,1286],{"class":90},"aa-status",[84,1288,1289],{"class":363}," |",[84,1291,1292],{"class":90}," grep",[84,1294,1129],{"class":116},[21,1296,1297,1298,1301,1302,1305],{},"Если профиль находится в режиме ",[39,1299,1300],{},"enforce",", переключите его в ",[39,1303,1304],{},"complain"," для тестирования:",[75,1307,1309],{"className":77,"code":1308,"language":79,"meta":80,"style":80},"sudo aa-complain /usr/local/bin/my_script.sh\n",[39,1310,1311],{"__ignoreMap":80},[84,1312,1313,1315,1318],{"class":86,"line":87},[84,1314,41],{"class":90},[84,1316,1317],{"class":116}," aa-complain",[84,1319,1153],{"class":116},[21,1321,1322,1323,1326],{},"Для SELinux используйте ",[39,1324,1325],{},"audit2why"," для анализа блокировок:",[75,1328,1330],{"className":77,"code":1329,"language":79,"meta":80,"style":80},"sudo ausearch -m avc -ts recent | audit2why\n",[39,1331,1332],{"__ignoreMap":80},[84,1333,1334,1336,1339,1342,1345,1348,1351,1353],{"class":86,"line":87},[84,1335,41],{"class":90},[84,1337,1338],{"class":116}," ausearch",[84,1340,1341],{"class":93}," -m",[84,1343,1344],{"class":116}," avc",[84,1346,1347],{"class":93}," -ts",[84,1349,1350],{"class":116}," recent",[84,1352,1289],{"class":363},[84,1354,1355],{"class":90}," audit2why\n",[21,1357,1358,1359,209],{},"При подтверждении блокировки добавьте исключение или обновите политики через ",[39,1360,1361],{},"semodule",[16,1363,1365],{"id":1364},"профилактика","Профилактика",[29,1367,1368,1381,1394,1404],{},[32,1369,1370,1373,1374,1377,1378,1380],{},[245,1371,1372],{},"Тестируйте в чистом окружении."," Перед добавлением в cron запускайте скрипт командой ",[39,1375,1376],{},"env -i bash /путь/к/script.sh",". Она имитирует пустое окружение ",[39,1379,48],{}," и сразу покажет проблемы с путями или переменными.",[32,1382,1383,1389,1390,1393],{},[245,1384,1385,1386,209],{},"Используйте ",[39,1387,1388],{},"sudo -u"," Для проверки прав запускайте ",[39,1391,1392],{},"sudo -u целевой_пользователь /путь/к/script.sh",". Это покажет реальные ограничения задачи до её добавления в расписание.",[32,1395,1396,1399,1400,1403],{},[245,1397,1398],{},"Настройте уведомления."," Добавьте в начало crontab строку ",[39,1401,1402],{},"MAILTO=\"admin@example.com\"",", чтобы система автоматически отправляла отчёты об ошибках на почту.",[32,1405,1406,1409,1410,1413],{},[245,1407,1408],{},"Фиксируйте пути в скриптах."," Добавляйте в начало каждого bash-скрипта ",[39,1411,1412],{},"set -euo pipefail",". Это заставит выполнение прерываться при первой ошибке прав доступа или отсутствующей команде, упрощая отладку.",[556,1415,1416],{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}",{"title":80,"searchDepth":111,"depth":111,"links":1418},[1419,1420,1421,1427],{"id":942,"depth":111,"text":943},{"id":968,"depth":111,"text":969},{"id":1019,"depth":111,"text":1020,"children":1422},[1423,1424,1425,1426],{"id":1024,"depth":137,"text":1025},{"id":1085,"depth":137,"text":1086},{"id":1193,"depth":137,"text":1194},{"id":1266,"depth":137,"text":1267},{"id":1364,"depth":111,"text":1365},"126","2026-04-06 10:16:45","Получили ошибку Permission denied при запуске cron? Разбираем 5 рабочих способов настроить права доступа и автоматизировать задачи за 5 минут.","easy","5-10 мин",[1434,1437,1440],{"question":1435,"answer":1436},"Почему cron возвращает permission denied, хотя скрипт запускается вручную?","При ручном запуске вы используете текущую среду и права пользователя, а cron работает в минимальном окружении и часто от имени другого пользователя. Убедитесь, что у файла стоят флаги выполнения и прописаны абсолютные пути.",{"question":1438,"answer":1439},"Можно ли запускать задачи cron от имени root без ошибок?","Да, но это требует осторожности. Добавьте задачу в `/etc/crontab` или используйте `sudo crontab -e`. Убедитесь, что скрипт не требует интерактивного ввода паролей или подтверждений.",{"question":1441,"answer":1442},"Как включить подробное логирование cron для отладки?","Раскомментируйте строку `auth,authpriv.* /var/log/auth.log` в конфигурации rsyslog или systemd-journald, затем проверьте `journalctl -u cron --since '10 min ago'`.",[1444,1447,1450,1453],{"name":1445,"text":1446},"Проверка и установка прав выполнения","Запустите `ls -l /путь/к/скрипту` и добавьте флаг `x` через `chmod +x`, чтобы система разрешила запуск файла.",{"name":1448,"text":1449},"Перевод путей на абсолютные","Замените все относительные пути в скрипте и crontab на полные (например, `/usr/bin/python3` вместо `python3`), так как cron использует пустой `PATH`.",{"name":1451,"text":1452},"Настройка прав рабочих директорий","Назначьте корректного владельца и права на папки логов и вывода данных командой `chown -R пользователь:группа /директория`.",{"name":1454,"text":1455},"Проверка политик безопасности","Убедитесь, что SELinux или AppArmor не блокируют выполнение, и при необходимости добавьте профиль в разрешающий режим или обновите политики.","PT8M",[1458,1459,1460,1461,1462,1463,1464,1465],"cron permission denied linux","ошибка прав доступа cron","crontab permission denied","скрипт не запускается по расписанию","chmod cron job","crontab exit code 126","настройка прав cron","планировщик задач linux ошибка",{},[1468,1469,1470],"/guides/linux/crontab-basics","/errors/linux/cron-not-starting","/guides/linux/linux-permissions-guide","Ошибки Linux",{"title":932,"description":1430},"errors/linux/cron-permission-denied","Ошибка «Permission denied» в cron-задачах возникает из-за недостатка прав на выполнение скриптов или файлов журналов. В статье вы найдёте проверенные методы настройки прав и восстановления работы планировщика.",[633,48,1476,79,1477,1478],"права доступа","администрирование","планировщик задач","error","OS52MxJsKZ594xIicQ73Us2bxwIr15YqP1ZYETjH4Fw"]