вторник, 8 марта 2016 г.

Автозапуск программ и скриптов при загрузке Ubuntu

Есть несколько способов настроить автоматическое выполнение скрипта или программы при загрузке Ubuntu. Самый простой - это использовать встроенную в Ubuntu утилиту, которую можно запустить через меню Ubuntu: Applications>System tools>Preferences>Startap Applications, но проще ее запустить используя команду gnome-session-properties. Чтобы проще было добавлять разные мелкие скрипты и команды в одну строчку через меню я добавил всего один скрипт в который и вношу правки просто в текстовом редакторе. Указанная утилита записывает добавляемые пункты автозапуска в директорию ~/.config/autostart.

Есть еще один способ добавить скрипт в автозагрузку. Для этого можно добавить в конфигурационный файл cron строчку вида
@reboot autostart.sh
Добавить строчку в конфигурационный файл cron можно используя команду crontab -e.

Однако на практике этот метод срабатывает плохо, поскольку при этом скрипт запускается слишком рано, когда многие службы и сервисы Ubuntu еще не запущены, поэтому есть высокая вероятность, что скрипт просто не сможет запуститься как надо.

В случае, если нужно запустить скрипт от имени суперпользователя (root), можно добавить скрипт в файл /etc/rc.local, добавлять sudo при этом не нужно.

Если же скрипт нужно запускать не при каждом запуске Ubuntu, а только раз в день вне зависимости от того в какое время был включен компьютер, следует использовать anacron.

Отмечу, что для того чтобы скрипт нормально запустился нужно добавить ему права на запуск, например, используя команду chmod +x myscript.sh. Кроме того, если вы будете использовать для запуска файл /etc/rc.local или метод с @reboot в cron, то не забывайте прописывать полный путь к скрипту, то есть указывать путь как /home/user/myscript.sh, а не ~/myscript.sh.

Для того, чтобы запрограммировать компьютер на автоматическое включение в заданное время можно использовать утилиту rtcwake. Например вот как выглядит команда для автоматического пробуждения компьютера "завтра" утром:
rtcwake -m no -t $(date +%s -d 'tomorrow 5:59')
Запускать ее следует от имени суперпользователя.

P.S. Если я что-то не очень понятно описал - задавайте вопросы в комментариях.

Популярные сообщения