Linux автозагрузка при входе пользователя

Как добавить скрипт в автозагрузку Ubuntu

Иногда возникает необходимость выполнить свой скрипт во время загрузки системы или при входе пользователя в систему. Например, чтобы запустить определенную программу, поменять настройки разрешения экрана, запустить программу удалённого управления и так далее.

Сделать это можно несколькими способами. С помощью графической оболочки или с помощью системы инициализации Systemd, которая используется сейчас практически во всех дистрибутивах.

Создание скрипта для автозагрузки

Скорее всего, у вас уже есть скрипт, который вы хотите запускать. Но если нет, или же вы хотите попрактиковаться с другим скриптом, то создайте скрипт в папке /usr/local/bin. Эта папка обычно используется для хранения пользовательских бинарных файлов. Дальше в этой статье я буду использовать путь к скрипту /usr/local/losst-script.sh:

sudo vi /usr/local/losst-script.sh #!/bin/bash echo «Hello world» > ~/file

Этот скрипт просто выводит строчку «Hello world» в файл в домашней папке текущего пользователя. Более подробно о создании скриптов читайте в статье написание скриптов на Bash. Когда скрипт будет готов, сделайте его исполняемым:

sudo chmod ugo+x /usr/local/losst-script.sh

Вы можете запустить скрипт и убедится что он работает. А теперь давайте рассмотрим как добавить скрипт в автозагрузку Ubuntu.

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

В Systemd нет способа запускать все пользовательские скрипты в одном месте. Но вы можете создать юнит файл, который будет запускать ваш скрипт. Для этого используйте следующую команду:

sudo systemctl edit —force —full script.service

Команда откроет текстовый редактор, добавьте в него такое содержимое:

[Unit] Description=My Script Service After=multi-user.target [Service] Type=idle ExecStart=/usr/local/losst-script.sh [Install] WantedBy=multi-user.target

В строчке ExecStart можно прописать либо путь к скрипту, который надо выполнить, либо саму команду. Кроме того, здесь используется тип сервиса Idle, который означает что процесс не будет разветвляться.

Теперь добавьте этот скрипт в автозагрузку:

sudo systemctl enable srcipt

Если Systemd не видит такого сервиса, обновите информацию о юнитах с помощью команды:

sudo systemctl daemon-reload

После этого скрипт запустится во время инициализации системы. Вы можете убедится что всё работает, перезагрузив систему и посмотрев в папку /root. Там должен появится файл с текстом Hello world.

Читайте также:  Linux bin install java

Если вам больше нравится старый способ загрузки скриптов, с помощью rc.local, вы можете создать файл /etc/rc.local, сделать его исполняемым и прописать путь к нему в строке ExecStart юнит-файла, после чего сможете им пользоваться как это было до появления Systemd.

Автозагрузка скрипта при входе пользователя

Такой тип автозагрузки может быть полезным для запуска приложений пользователя или программ удалённого управления, например x11vnc.

1. Автозагрузка Gnome в GUI

Запустите утилиту Автоматически запускаемые приложения или Startup Applications в главном меню системы. Эту же утилиту можно запустить из терминала выполнив команду:

Нажмите кнопку Добавить (Add) и в открывшемся окне, в поле Команда (Command) введите полный путь к файлу вашего скрипта или выберите его с помощью кнопки Обзор (Browse), затем нажмите Добавить (Add) внизу окна:

Скрипт будет выполнен после загрузки графической оболочки Ubuntu. Вы можете перезагрузить систему и убедится, что в домашней папке вашего пользователя появился файл file, с содержимым «Hello world».

2. Автозагрузка Gnome вручную

Всё описанное в предыдущем пункте можно сделать и вручную, без утилиты Startup Applications. Ярлыки приложений для автозагрузки могут находится в двух расположениях:

  • /etc/xdg/autostart/ — для всех пользователей;
  • ~/.config/autostart/ — для текущего пользователя.

Для создания ярлыка, который будет запускать ваш скрипт, создайте файл с расширением .desktop в одной из папок со следующим содержимым:

vi ~/.config/autostart/script.desktop [Desktop Entry]
Name=Script
Type=Application
Exec=/usr/local/losst-script.sh

Здесь в поле Exec необходимо прописать путь к скрипту, который надо выполнить, а в поле Name имя ярлыка. После этого ваш скрипт будет запускаться автоматически при входе пользователя в графическую оболочку. Утилита Startup Applications будет видеть этот ярлык и вы можете управлять им там тоже.

3. Автозагрузка в Systemd

Система инициализации Systemd позволяет запускать отдельный набор сервисов для каждого пользователя. Для управления такими сервисами нужно использовать опцию —user. Используйте такую команду для того чтобы создать файл скрипта:

systemctl edit —user —force —full script.service [Unit] Description=My Script Service After=default.target [Service] Type=idle ExecStart=/usr/local/losst-script.sh [Install] WantedBy=default.target

Юнит файл будет создан только для текущего пользователя. В данном случае это будет файл /home/sergiy/.config/systemd/user/script.service. Обратите внимание, что цель multi-user.target здесь недоступна, поэтому следует использовать default.target. Теперь осталось только добавить этот юнит в автозагрузку:

systemctl enable —user script.service

Поле этого можно перезагрузить систему и убедится что всё работает.

Выводы

Теперь вы знаете как добавить скрипт в автозагрузку Linux несколькими способами. Это может быть немного сложно для начинающих, но вы можете ознакомится ещё со статьей про Автозагрузку сервисов, а также Управление службами для того чтобы лучше понимать как всё работает.

Читайте также:  Linux rdp передача файлов

Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.

Источник

Автозапуск в Linux

Автозапуск в Linux

Одним из самых старых способов запуска нужных команд является специальный файл rc.local. Находится данный файл в директории /etc/ и по умолчанию содержит всего одну команду:

Достаточно написать что-то перед данной строкой, и эта команда будет исполнятся при запуске системы.

В современных системах, вроде Debian 9 или Ubuntu 18.04, данный файл отсутствует, но ради обеспечения обратной совместимости возможность автозапуска с его помощью оставлена.
Для его использования, нужно сперва данный файл создать, а затем дополнительно активировать через systemd:

systemctl enable rc-local systemctl start rc-local.service

.bashrc и .profile

Если нужно автоматически запускать какую-то программу, скрипт или команду при входе пользователя в систему, то для этой цели прекрасно подойдут файлы .bashrc и .profile.

Данные файлы находятся в двух местах, и выполняются в следующем порядке:

  • Общие для всех пользователей файлы находятся в директории /etc/
  • Для каждого пользователя так же существуют отдельные экземпляры данных файлов, которые находятся в корне их домашних директорий- например, у пользователя sysadmin, они будут находится по пути /home/sysadmin.

Для корректного использования данных файлов, следует понимать их предназначение в системе:

  • .bash_profile — данный файл используется для загрузки файлов .profile и .bashrc (в приведенном порядке).
  • .bashrc — содержимое данного файла загружается при входе в режим терминала. Именно здесь задаются такие параметры, как внешний вид среды терминала, текстовый редактор по умолчанию и другое.
  • .profile — содержимое данного файла загружается при загрузке графической оболочки. Здесь могут быть указаны различные переменные среды, и прочее не относящееся к bash содержимое.

Источник

unixforum.org

Подскажите пожалуйста, каким образом в debian можно добавить в автозагрузку программу, которая запускалась бы после авторизации конкретного пользователя, а не при загрузке системы.
Благодарю за помощь.

Olej Сообщения: 659 ОС: Fedora, Mint, Debian, QNX Контактная информация:

Re: Автозапуск программы при авторизации пользователя

Сообщение Olej » 29.05.2016 16:02

Подскажите пожалуйста, каким образом в debian можно добавить в автозагрузку программу, которая запускалась бы после авторизации конкретного пользователя, а не при загрузке системы.

$HOME/.bashrc — это не при авторизации, но пригодно для установки переменных окружения, etc.
В некоторых дистрибутивах (не вспомню сразу при каких обстоятельствах) — $HOME/.profile

Re: Автозапуск программы при авторизации пользователя

Сообщение bormant » 29.05.2016 19:30

Если bash запускается как login shell, выполняется /etc/profile, затем первый из ~/.bash_profile, ~/.bash_login, ~/.profile.
Иначе, если bash запускается как интерактивная оболочка не-login, выполняется ~/.bashrc (если не было отменено по —norc или не изменено имя по —rcfile).
См. man bash, раздел INVOCATION.

Re: Автозапуск программы при авторизации пользователя

Сообщение rl0ad » 29.05.2016 20:55

Читайте также:  Adapter for kali linux

— будет выполняться при каждом запуске bash Тут нужно использовать:

Но это только один из вариантов, еще можно использовать DM hooks.

Bizdelnick Модератор Сообщения: 20384 Статус: nulla salus bello ОС: Debian GNU/Linux

Re: Автозапуск программы при авторизации пользователя

Сообщение Bizdelnick » 29.05.2016 22:08

Если (пытаюсь угадать) нужно запускать программу при входе в графическую сессию, то пишется .desktop-файл и кладётся в ~/.config/autostart/. Подробнее см. https://specifications.freedesktop.org/auto. 5/ar01s02.html

в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик

Источник

Пользователь не админ. Автозапуск скрипта sh при входе в систему.

Куда и что нужно прописать, чтобы при входе пользователя (не админа) в систему он автоматически запускался?

Ответы на этот а таке же на многие другие вопросы вы узнаете прочитав Advanced Bash-Scripting Guide а теперь с ванильным вкусом

Re: Пользователь не админ. Автозапуск скрипта sh при входе в систему.

Re: Пользователь не админ. Автозапуск скрипта sh при входе в систему.

init_6 wrote:

а теперь с ванильным вкусом

Там только старая версия 2.5. Лучше читать актуальную на английском.

> А какая разница?
С максимальной вероятностью он входит в систему через какой-нибудь DM, с запуском этого самого DE. Исполняет ли этот DM/DE .bash_login или .bashrc при входе в систему? Может быть, лучше будет организовать автозапуск средствами этого DE?

что такое DE. Gnome,Xfree,KDE .

Ну так подскажите способом, который бы работал без DE. Это было бы универсально )

> Gnome,Xfree,KDE .
Gnome, KDE, XFCE, LXDE. Ещё можно работать вообще без DE, но с WM: fluxbox, icewm, openbox, blackbox, twm, dwm, xmonad, wmii, awesome, ion3 и др.

Можно попробовать автозапуск через .xinitrc.

> способом, который бы работал без DE.

Сильно зависит от постановки задачи.

Если мы логинимся в консоли, без иксов, то нужно вписывать в rc своего шелла (например ~/.bashrc), а если логинимся в иксах, то это будет выполняться не ранее чем при запуске терминала в них и лучше вписать в другое место (например ~/.xinitrc).

>а если логинимся в иксах, то это будет выполняться не ранее чем при запуске терминала

Это если не читать скрипты. Прошлый раз я там видел «#!bash -l», который известно что делает. Т.ч. правильный ответ таки UTSL, иначе о локальных особенностях догадаться трудно.

Запихать в /etc/profile что-то вида
[ $USER = theuser ] && /path/to/test.sh

Если login shell не борновский, читайте документацию по нему

это маздайство. есть ~/.profile

Источник

Оцените статью
Adblock
detector