Добавление команд в автозагрузку

Добавьте запись в ~/.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 – быстрее. Жми «Создать задачу» справа. Не «Создать простую задачу», а именно полную. Там больше контроля.

Читайте также:  Установка Matomo Web Analytics (Piwik) на Ubuntu 20.04 с использованием Apache/Nginx

Во вкладке «Общие» заполняй:

  • Имя: произвольное, но без пробелов
  • Пользователь: 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 или админ-учётка.

Проверь результат: вкладка «Библиотека планировщика» → найди свою задачу → ПКМ → «Выполнить». Смотри лог в «История».

Читайте также:  Посмотреть список поддерживаемых форматов в Linux

Для отладки – включи логирование в самом скрипте. Особенно, если он на 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. Система проигнорирует.

Читайте также:  Работа с текстовыми файлами в Linux команды cat less nano и другие

Для проверки: выйти из системы и войти снова. Если ярлык не сработал – причина, как правило, в неправильном пути, кавычках или правах.

Важно помнить: при использовании 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 – забудь, это атавизм.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *