Добавьте запись в ~/.config/autostart и дело с концом. На большинстве дистрибутивов, включая Red OS, этого достаточно для пользовательских графических приложений. Формат файла – обычный .desktop, структура тривиальна:
[Desktop Entry]
Type=Application
Exec=/home/user/scripts/sync.sh
Hidden=false
NoDisplay=false
X-GNOME-Autostart-enabled=true
Name=Sync Script
Надо внести системную задачу? Не пользуйтесь rc.local – его поддержка не гарантирована. Вместо этого создайте юнит для systemd:
[Unit]
Description=Run rsync at startup
After=network.target
[Service]
ExecStart=/usr/bin/rsync -a /mnt/backup /mnt/storage
Type=oneshot
[Install]
WantedBy=multi-user.target
Сохраните в /etc/systemd/system/rsync-backup.service, выполните systemctl enable rsync-backup. Готово. Проверено. Работает.
Важно! Не прописывайте произвольные скрипты в crontab с параметром
@reboot, если нужна предсказуемость. Слишком рано стартует. Нет сети – всё рушится.
Что в графической оболочке не взлетает – проверьте, запускается ли оболочка через startx или gdm. Поведение разное. Где-то нужен ~/.xinitrc, где-то – только ~/.profile с вызовом your-script.sh &. Да, это безумие.
На другом фронте – система от Microsoft. Откройте реестр: HKCU\Software\Microsoft\Windows\CurrentVersion\Run. Значение типа REG_SZ. Ключ – имя, значение – путь:
SyncScript "C:\Users\user\scripts\sync.bat"
Нужно на уровне всей машины? Используйте HKLM вместо HKCU. Работает при входе любого пользователя. Никаких ярлыков в папку Startup. Это архаика.
Помните: если путь содержит пробелы – заключайте его в двойные кавычки, иначе всё пойдет крахом.
Есть PowerShell? Запустите:
Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Run" -Name "SyncScript" -Value '"C:\Scripts\sync.ps1"'
Для фоновых служб используйте sc create или New-Service. Но это уже другая песня. Там другая оркестровка.
Работайте точно. Не гадать – знать. Не тестировать в проде – проверять в черновике. Автозапуск не про «на авось».
Содержание статьи
Добавление пользовательского скрипта в автозагрузку через планировщик заданий Windows
Открой taskschd.msc через меню Пуск. Без PowerShell – быстрее. Жми «Создать задачу» справа. Не «Создать простую задачу», а именно полную. Там больше контроля.
Во вкладке «Общие» заполняй:
- Имя: произвольное, но без пробелов
- Пользователь: SYSTEM, если скрипт требует прав администратора
- Выполнять с наивысшими правами: обязательно
Переходи в «Триггеры». Кнопка «Создать»:
- Начало задачи: При входе в систему
- Пользователь: тот, для кого должен запускаться
Теперь «Действия». Жми «Создать». Указывай путь до интерпретатора. Примеры:
Программа/скрипт: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
Аргументы: -ExecutionPolicy Bypass -File "C:\scripts\my_script.ps1"
Если это .bat или .exe – просто путь до файла:
Программа/скрипт: C:\scripts\run_me.bat
Проверь «Условия». Сними галку с «Запускать только при питании от сети» – иначе скрипт не сработает на ноутбуке без зарядки. Отключи таймауты и «спящий режим».
Вкладка «Параметры». Включи повтор при сбое. Поставь «Если задача уже выполняется» – «Не запускать новое экземпляр».
Внимание! Без прав администратора задача не выполнится, даже если ты всё настроишь правильно. Только SYSTEM или админ-учётка.
Проверь результат: вкладка «Библиотека планировщика» → найди свою задачу → ПКМ → «Выполнить». Смотри лог в «История».
Для отладки – включи логирование в самом скрипте. Особенно, если он на PowerShell: лог в файл, иначе будешь гадать, запустился он или нет.
Важно помнить: имя скрипта не должно содержать пробелов и спецсимволов, особенно при запуске через CMD или PowerShell.
Тестируй сразу после перезапуска системы. Не через логин, а именно полная перезагрузка. Часто именно тут всё ломается.
Если не запускается – проверь Task Scheduler на ошибки. Логи в Event Viewer → Microsoft → Windows → TaskScheduler.
Это не просто автозагрузка. Это контроль. Тонкий. Четкий. Предсказуемый. Используй.
Создание ярлыка команды в папке автозагрузки Windows
Открыть диалоговое окно shell:startup через сочетание клавиш Win + R. Это мгновенно перенесёт в нужную директорию – системную папку, где всё срабатывает после входа пользователя.
Создать ярлык вручную. Правый клик → Создать → Ярлык. В строку объекта вписать:
cmd.exe /c "путь\к\скрипту.bat"
Или для PowerShell:
powershell.exe -ExecutionPolicy Bypass -File "C:\scripts\startup-task.ps1"
Название – любое. Главное – не врать себе: скрипт должен быть протестирован, права – проверены.
Права. Проблема вечная. Если требуются привилегии администратора – ярлык бесполезен. Только задача через Планировщик (см. раздел о taskschd.msc).
Для exe-файлов путь указывается напрямую. Без обёрток и лишнего:
"C:\Program Files\CustomApp\run.exe"
Внимание! Если используется относительный путь или сетевой ресурс – загрузка может не сработать из-за задержки монтирования.
Расширение файла обязательно. Никаких startup-script без .bat или .ps1. Система проигнорирует.
Для проверки: выйти из системы и войти снова. Если ярлык не сработал – причина, как правило, в неправильном пути, кавычках или правах.
Важно помнить: при использовании PowerShell включите обход политик выполнения, иначе скрипт заблокируется по умолчанию.
Нестандартный путь? Задать переменные окружения. В ярлыке это работает:
%USERPROFILE%\scripts\launcher.bat
Журнал ошибок? Нет. Отладка только через ручной запуск. Или через логирование внутри самого скрипта. Всё – как в старой школе.
Добавление команд в автозагрузку Linux с помощью crontab и systemd
Нужно, чтобы скрипт выполнялся при запуске? Без графики, без шелухи – только ядро. Используй systemd или crontab. Всё остальное – костыли.
Через systemd: надёжно, предсказуемо
Создай unit-файл в каталоге /etc/systemd/system/. Название – по задаче. Пример:
[Unit]
Description=Запуск скрипта при старте
After=network.target
[Service]
Type=simple
ExecStart=/usr/local/bin/myscript.sh
Restart=on-failure
[Install]
WantedBy=multi-user.target
Права? 644. Владелец – root. Потом:
chmod +x /usr/local/bin/myscript.sh
systemctl daemon-reexec
systemctl enable myscript.service
systemctl start myscript.service
И всё. Проверка:
systemctl status myscript.service
Важно: не прописывай путь к bash в unit-файле. Только к скрипту. Пусть сам скрипт знает, чем его запускать.
Через crontab: только для фанатов старой школы
Открой crontab на редактирование:
crontab -e
В конец впиши:
@reboot /usr/local/bin/myscript.sh
Работает, если скрипт не зависит от systemd-юнитов. Без гарантий последовательности и контроля.
Внимание! В Red OS cron может быть отключён по умолчанию. Проверь статус через
systemctl status crond.
Что выбрать?
- systemd – строго, детерминировано, управляемо.
- crontab – только если нужна совместимость с legacy-системами.
Скрипт запускается, сервис поднят, логи в journalctl -u myscript.service. И никакой самодеятельности через /etc/rc.local – забудь, это атавизм.

