TGViewer
BashTex | Linux BashTex | Linux @bash_tex · 2.51K subscribers
Post #529 757
Почему cron не сработал

Каждый админ хотя бы раз слышал: Cron не отработал.
Но, спойлер: в 90% случаев cron работает. Не работает: окружение, путь или логика скрипта.

1️⃣ Неправильный PATH. Cron запускается с минимальным окружением. То, что работает в shell:


myscript.sh


В cron может не найти: command not found

Проверка:


echo $PATH


Решение:


PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin


Или использовать абсолютные пути:


/usr/bin/rsync
/usr/bin/docker


2️⃣ Не тот пользователь. Есть:


crontab -e


И есть:


sudo crontab -e


Это два разных crontab.

Проверка:


crontab -l
sudo crontab -l


Иногда задача просто стоит не там.

3️⃣ Нет прав на файл. Скрипт есть. Но:


chmod +x script.sh


забыли. Или владелец не тот.

4️⃣ Неправильный shebang. Если в начале:


#!/bin/bash


А на системе bash лежит в:


/usr/bin/bash


Cron молча свалится. Проверка:


which bash


Лучший вариант:


#!/usr/bin/env bash


5️⃣ Нет логирования и кажется, не сработал Если вывод не перенаправлен, ты его не увидишь. Правильно:


0 3 * * * /path/script.sh >> /var/log/script.log 2>&1


Без этого ты гадаешь.

6️⃣ Разница окружения. Cron не знает:

твоих alias
твоих переменных
твоего virtualenv
твоего nvm

Если работает вручную, но не в cron - почти всегда проблема в ENV.

Debug-метод:


env > /tmp/cron_env.txt


7️⃣ Скрипт падает внутри. Cron сработал. Но внутри:


rm -rf "$DIR"


где $DIR пустой.

Без:


set -euo pipefail


ошибка могла остаться незамеченной.

8️⃣ Cron вообще не запущен. Редко, но бывает. Проверка:


systemctl status cron
# или
systemctl status crond


BashTex 📱 #cron
  • 👍 11
More from @bash_tex
  1. Oct 7, 2026/dev/tcp - сетевое соединение средствами Bash В Bash есть малоизвестная возможность работа…
  2. Oct 6, 2026Ephemeral ports - почему заканчиваются исходящие TCP-порты Когда приложение устанавливает…
  3. Oct 5, 2026name_to_handle_at() - как получить файловый объект без обычного пути В Linux обычно обраща…
  4. Oct 2, 2026madvise() - как процесс подсказывает ядру, как он собирается использовать память Когда про…
  5. Oct 1, 2026flock vs fcntl - почему две блокировки одного файла могут вести себя совершенно по-разному…
  6. Sep 30, 2026DEBUG trap - как Bash выполняет код перед каждой командой В Bash есть специальный DEBUG tr…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →