⚠️ ОПАСНО: rm -r $temp_dir (пустая переменная)
Если переменная
Пример опасной ситуации:
Если переменная
$temp_dir пустая или содержит неверное значение, команда rm -r $temp_dir может удалить важные данные.
Пример опасной ситуации:
# Если temp_dir не задана или пустая:
temp_dir=""
rm -r $temp_dir # выполнится как: rm -r (может удалить текущую директорию или всё!)
Безопасная альтернатива — всегда проверяйте переменную:
# БЕЗОПАСНО: проверка перед удалением
if [ -n "$temp_dir" ] && [ -d "$temp_dir" ]; then
rm -r "$temp_dir"
else
echo "ERROR: temp_dir is empty or does not exist. Aborting."
exit 1
fi
Также используйте кавычки: rm -r "$temp_dir" — тогда при пустой переменной bash выдаст ошибку вместо тихого удаления.
⚠️ ВНИМАНИЕ: crontab -r удаляет ВСЕ задания!
crontab -r и crontab -e — это разные команды с похожими флагами. Опечатка стоит потери всех cron-заданий:
crontab -e # ПРАВИЛЬНО — открывает редактор для изменений
crontab -r # ОПАСНО — удаляет ВСЕ задания без подтверждения!
Если вы случайно выполнили crontab -r, задания не восстанавливаются автоматически. Создавайте резервные копии:
# Сохранить текущие задания в файл
crontab -l > ~/crontab_backup.txt
# Восстановить из файла
crontab ~/crontab_backup.txt
Совет: вместо удаления всего задания его можно закомментировать, добавив # в начало строки в crontab -e.
Синтаксические ошибки в crontab
Ошибка 1: Неверное количество полей
# НЕВЕРНО — только 4 поля, пропущено одно
* * * * /tmp/script.sh
# ВЕРНО — 5 полей расписания + команда
* * * * * /tmp/script.sh
Ошибка 2: Использование запятой вместо пробела как разделителя
# НЕВЕРНО — запятая разделяет значения внутри одного поля
*/15,* * * * /tmp/script.sh
# ВЕРНО — */15 это «шаг 15»
*/15 * * * * /tmp/script.sh
Ошибка 3: Относительный путь к скрипту
# НЕВЕРНО — cron не знает рабочую директорию пользователя
* * * * * ./script.sh
# ВЕРНО — всегда абсолютный путь
* * * * * /home/user/script.sh
Ошибка 4: Нет прав исполнения на скрипт
# Скрипт не сделан исполняемым — cron молча не выполнит его
# Решение:
chmod +x /tmp/script.sh
Ошибка 5: Нет сохранения вывода → не видно ошибок
# Без логирования не узнаете об ошибках:
* * * * * /tmp/script.sh
# С логированием (stdout + stderr):
* * * * * /tmp/script.sh >> /tmp/script.log 2>&1
Типичные ошибки с tar
Ошибка 1: Перепутать -c и -x
# ОПАСНО — -x вместо -c перезапишет файлы из архива!
tar -xf archive.tar # извлечение (может перезаписать рабочие файлы)
tar -cf archive.tar # создание (правильно при создании архива)
Ошибка 2: Забыть флаг -f
# НЕВЕРНО — без -f tar не знает имя архива
tar -cz directory/
# ВЕРНО
tar -czf archive.tar.gz directory/
Ошибка 3: Архивировать в себя
# ПРОБЛЕМА — если archive.tar.gz находится внутри directory/:
tar -czf directory/archive.tar.gz directory/
# tar будет пытаться включить сам себя в архив
# РЕШЕНИЕ — архивировать в другое место:
tar -czf /tmp/archive.tar.gz directory/