Автоматизация и shell
Cron, timers, переменные окружения, алиасы и история.
Cron
У cron бедное окружение: абсолютные пути и явные логи помогают быстрее отлаживать.
crontab -l crontab -e sudo crontab -l grep CRON /var/log/syslog run-parts --test /etc/cron.daily systemctl status cron --no-pager
systemd timers
Для серверных регулярных задач timers часто удобнее cron: есть статус, логи и зависимости.
systemctl list-timers --all systemctl status TIMER_NAME.timer --no-pager systemctl start TIMER_NAME.timer systemctl enable TIMER_NAME.timer journalctl -u TIMER_NAME.service -n 80 --no-pager systemd-analyze calendar "Mon *-*-* 03:00:00"
Одноразовые задачи
`at` удобен для отложенного действия, если не нужен постоянный timer.
at now + 10 minutes atq atrm JOB_ID echo "systemctl restart nginx" | at 03:00 batch
Shell-профиль
Не класть секреты в общий профиль. Для командного удобства достаточно алиасов и переменных.
env printenv PATH export EDITOR=nano alias ll='ls -lah' unalias ll source ~/.bashrc history | tail -n 40
Мини-скрипты
В скриптах для администрирования включать строгий режим и понятный вывод ошибок.
bash -n script.sh shellcheck script.sh chmod +x script.sh ./script.sh set -euo pipefail trap 'echo failed at line $LINENO' ERR
Что искать дальше
Полезные запросы: `systemd timer example`, `cron environment PATH`, `bash strict mode`, `shellcheck examples`.