Автоматизация
Скрипты, планировщики и инструменты автоматизации
На этой странице
Опубликовано: 01.02.2026 •
Обновлено: 01.02.2026
Автоматизация рутинных задач экономит время и снижает количество ошибок.
Bash-скрипты
Основы
#!/bin/bash
# Переменные
NAME="ROSA Linux"
VERSION=$(cat /etc/os-release | grep VERSION_ID | cut -d= -f2)
# Вывод
echo "Система: $NAME $VERSION"
# Условия
if [ -f /etc/rosa-release ]; then
echo "Это ROSA Linux"
fi
# Циклы
for file in /var/log/*.log; do
echo "Найден лог: $file"
done
Полезный скрипт: обновление системы
#!/bin/bash
set -e
echo "=== Обновление системы ==="
# Обновление пакетов
sudo dnf update -y
# Очистка
sudo dnf autoremove -y
sudo dnf clean all
# Flatpak
if command -v flatpak &> /dev/null; then
echo "=== Обновление Flatpak ==="
flatpak update -y
fi
echo "=== Готово ==="
Сохраните как ~/bin/update-system.sh и сделайте исполняемым:
mkdir -p ~/bin
chmod +x ~/bin/update-system.sh
Systemd таймеры
Замена cron с интеграцией в systemd.
Пример: еженедельная очистка
~/.config/systemd/user/cleanup.service:
[Unit]
Description=Weekly cleanup
[Service]
Type=oneshot
ExecStart=/home/user/bin/cleanup.sh
~/.config/systemd/user/cleanup.timer:
[Unit]
Description=Run cleanup weekly
[Timer]
OnCalendar=weekly
Persistent=true
[Install]
WantedBy=timers.target
systemctl --user daemon-reload
systemctl --user enable --now cleanup.timer
Cron (классический способ)
# Редактирование задач
crontab -e
Формат:
# минута час день месяц день_недели команда
0 2 * * * /home/user/bin/backup.sh # Каждый день в 2:00
0 0 * * 0 /home/user/bin/weekly.sh # Каждое воскресенье
*/15 * * * * /home/user/bin/check.sh # Каждые 15 минут
Ansible
Для сложной автоматизации и управления несколькими машинами.
Установка
sudo dnf install ansible
Простой playbook
setup.yml:
---
- name: Настройка рабочей станции
hosts: localhost
become: yes
tasks:
- name: Обновить систему
dnf:
name: "*"
state: latest
- name: Установить базовые программы
dnf:
name:
- vim
- htop
- git
state: present
- name: Включить сервис SSH
systemd:
name: sshd
enabled: yes
state: started
Запуск:
ansible-playbook setup.yml
Алиасы и функции
В ~/.bashrc:
# Алиасы
alias update='sudo dnf update'
alias ll='ls -lah'
alias ..='cd ..'
alias grep='grep --color=auto'
# Функции
mkcd() {
mkdir -p "$1" && cd "$1"
}
extract() {
if [ -f "$1" ]; then
case "$1" in
*.tar.bz2) tar xjf "$1" ;;
*.tar.gz) tar xzf "$1" ;;
*.tar.xz) tar xJf "$1" ;;
*.zip) unzip "$1" ;;
*.7z) 7z x "$1" ;;
*) echo "Неизвестный формат: $1" ;;
esac
fi
}
Автозапуск приложений
Графические приложения
Создайте .desktop файл в ~/.config/autostart/:
[Desktop Entry]
Type=Application
Name=My App
Exec=/path/to/app
Hidden=false
X-GNOME-Autostart-enabled=true
Через systemd
# Создайте user-сервис
nano ~/.config/systemd/user/myapp.service
# Включите
systemctl --user enable myapp
Резервное копирование
Простой скрипт с rsync
#!/bin/bash
SOURCE="/home/user"
DEST="/mnt/backup"
DATE=$(date +%Y-%m-%d)
rsync -avz --delete \
--exclude='.cache' \
--exclude='Downloads' \
"$SOURCE" "$DEST/backup-$DATE"
# Удаление старых бэкапов (старше 30 дней)
find "$DEST" -maxdepth 1 -name "backup-*" -mtime +30 -exec rm -rf {} \;
Borg Backup
Продвинутое решение с дедупликацией:
sudo dnf install borgbackup
# Инициализация репозитория
borg init --encryption=repokey /mnt/backup/borg
# Создание бэкапа
borg create /mnt/backup/borg::backup-$(date +%Y-%m-%d) /home/user
# Список бэкапов
borg list /mnt/backup/borg
Мониторинг
Скрипт проверки диска
#!/bin/bash
THRESHOLD=90
df -H | grep -vE '^Filesystem|tmpfs' | awk '{ print $5 " " $1 }' | while read usage partition; do
usage_num=${usage%\%}
if [ "$usage_num" -ge "$THRESHOLD" ]; then
echo "Внимание: $partition заполнен на $usage"
fi
done
Совет
Начинайте с простых скриптов и постепенно усложняйте. Автоматизируйте то, что делаете чаще всего.