Форум русскоязычного сообщества Ubuntu


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

Автор Тема: Как добавить скрипт в автозагрузку Ubuntu 18.04  (Прочитано 15738 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн OptionBase

  • Автор темы
  • Участник
  • *
  • Сообщений: 221
    • Просмотр профиля
Здравствуйте, подскажите пожалуйста, как добавить скрипт в автозагрузку Ubuntu 18.04 ?
В Ubuntu 16.04 был файл /etc/rc.local
Сейчас этого файла нет.

Оффлайн Sly_tom_cat

  • Don't worry, be happy!
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 12130
  • Xubuntu 22.04
    • Просмотр профиля
    • Github
А создать не пробовали?

Но правиьнее IMHO делать всякие автозагрузки через sysstemd.
Индикатор для Yandex-Disk: https://forum.ubuntu.ru/index.php?topic=241992
UEFI-Boot - грузимся без загрузчика: https://help.ubuntu.ru/wiki/uefiboot

Оффлайн Azure

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн OptionBase

  • Автор темы
  • Участник
  • *
  • Сообщений: 221
    • Просмотр профиля
А я бы начал так https://help.ubuntu.ru/manual/автозапуск_приложений
Здравствуйте, спасибо что не прошли мимо)
Добавил в запуск приложений, но команда в скрипте требует рутового пароля. Короче не запускается этим способом.
Да и отвык я как то работать в гуе. Консоль роднее.

Остались еще какие либо варианты?
Заранее благодарен.

Пользователь добавил сообщение 27 Июля 2018, 09:28:51:
А создать не пробовали?

Но правиьнее IMHO делать всякие автозагрузки через sysstemd.

Спасибо за ответ)
Нет, создавать не пробовал. Не хочу костыли плодить в системе. Хочу разобраться, как в новой версии должно работать.

Подскажите пожалуйста, как делать через systemd ?
« Последнее редактирование: 27 Июля 2018, 09:28:51 от OptionBase »

Оффлайн Azure

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн zg_nico

  • Заслуженный пользователь
  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 3513
  • Nil mortalibus arduum est
    • Просмотр профиля
команда в скрипте требует рутового пароля
Да и отвык я как то работать в гуе. Консоль роднее.
Любой каприз за Ваши деньги! :) Допустим, скрипт у нас называется /home/[ЮЗВЕРЬ]/Autost (полный путь). Для организации автозапуска от рута необходимо и достаточно: 1. Создаем ярлык (.desktop файл) на этот скрипт:echo "[Desktop Entry]" > $HOME/MyAutostart.desktopВносим в него код (в ярлыках переменные окружения не пашут, что странно, поэтому пишем ручками вместо [ЮЗВЕРЬ] имя юзера /или какой там у Вас путь к скрипту?/):echo "#!/usr/bin/env xdg-open" >> $HOME/MyAutostart.desktop
echo "[Desktop Entry]" >> $HOME/MyAutostart.desktop
echo "Type=Application" >> $HOME/MyAutostart.desktop
echo "Name=MyAuto" >> $HOME/MyAutostart.desktop
echo "Exec=/home/[ЮЗВЕРЬ]/Autost" >> $HOME/MyAutostart.desktop
Делаем его исполняемым: chmod +x $HOME/MyAutostart.desktop2. Кидаем его в правильное место:
а. Если хотим запуск от имени текущего пользователя: mv $HOME/MyAutostart.desktop  $HOME/.config/autostart/MyAutostart.desktopб. Если хотим запуск от имени суперпользователя с соответствующими правами: sudo mv $HOME/MyAutostart.desktop  /etc/xdg/autostart/MyAutostart.desktop
« Последнее редактирование: 29 Июля 2018, 22:21:00 от zg_nico »
Thunderobot G150-D2: Intel SkyLake Core i7-6700HQ 2.60GHz, 8Gb DDR4 2133 MHz, Intel HD530, NVidia GeForce GTX 960M 2Gb.  Ubuntu 16.04 64x [Unity], KUbuntu 18.04 64x.

Оффлайн andytux

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 6896
    • Просмотр профиля
Цитировать
в ярлыках переменные окружения не пашут, что странно, поэтому пишем ручками вместо [ЮЗВЕРЬ] имя юзера /или какой там у Вас путь к скрипту?
Не совсем верно. Если запускаемая программа находится по стандартному адресу, разрешенному для заруска (например: /bin, /usr/bin), то достаточно только имени программы.
/home не входит в число стандартных путей. Поэтому, для запуска программы, находящейся в /home,  придется писать полный путь.
Цитировать
Если хотим запуск от имени суперпользователя с соответствующими правами...
Это не решит проблемы запуска программы, требующей рутовых прав. Программа все равно потребует ввод пароля, но вы этого никогда не увидите, т.к. нет окна. В результате программа не будет запущена.
Два варианта решения проблемы.
1. Запуск программы поместить в шелл-скрипт. В десктоп-файл добавить строку: "Terminal=true" и прописать запуск этого скрипта.
   В результате, при запуске появится окно терминала, с запросом пароля.
2. Задействовать sudoers. В каталоге /etc/sudoers.d создать файл с любым названием. В файл поместить код:
user ALL=NOPASSWD: /polny/put/k/programme/programmaГде, user - имя пользователя, которому разрешается запуск программы без запроса пароля.

Оффлайн Sly_tom_cat

  • Don't worry, be happy!
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 12130
  • Xubuntu 22.04
    • Просмотр профиля
    • Github
2. Задействовать sudoers. ...
Это потенциальная дыра в безопасности (если "/polny/put/k/programme/programma" где-то в ./home). По возможности лучше избегать таких решений (бо средний пользователь 100% оставит программу в хомяке).

Azure уже дал ссылку на вполне приличный мануал по systemd. ИМХО это самый адекватный вариант для запуска как под рутом так и под пользователем (причем можно еще до логина пользователя).

И, да!!!, в любом случае программа/скрипт вызываемый от рута не должен лежать в /home/* !!! Либо надо его переместить в /usr (/usr/bin, например) либо в /etc, ну и на худой конец можно в /root положить. И права на изменение только руту.
Индикатор для Yandex-Disk: https://forum.ubuntu.ru/index.php?topic=241992
UEFI-Boot - грузимся без загрузчика: https://help.ubuntu.ru/wiki/uefiboot

Оффлайн victor00000

  • Старожил
  • *
  • Сообщений: 15568
  • Глухонемой (Deaf)
    • Просмотр профиля
#!/bin/bash
. ./script-1.sh
. ./script-2.sh
. ./script-3.sh
. ./script-4.sh

echo "OK."
exit
правильно?
Wars ~.o

Оффлайн miarle

  • Участник
  • *
  • Сообщений: 205
  • Ubuntu 18.04 + i3 window manager
    • Просмотр профиля
Re: Как добавить скрипт в автозагрузку Ubuntu 18.04
« Ответ #9 : 31 Декабря 2018, 21:52:34 »
Решение то есть?
CPU: 8 core AMD FX-8300 Eight-Core
RAM: Kingston DDR3-1600 8192MB PC3-12800
GPU: NVIDIA GP107 [GeForce GTX 1050]

Оффлайн Rabinovitch

  • Новичок
  • *
  • Сообщений: 33
    • Просмотр профиля
Re: Как добавить скрипт в автозагрузку Ubuntu 18.04
« Ответ #10 : 27 Января 2019, 10:37:37 »
Не видать. Всё должно быть как-то просто и очевидно. Но пока вот часа два уже упражняюсь - не стартует программа (терминальная). Ручками все те файлы, что содаются в разных /etc/init.d запускаются, нет проблем, при загрузке системы (ubuntu 18.04 настроенная на старт с runlevel 3 - сейчас это как-то более замудрённо называется, multi-user.target) - при загрузке системы не стартует.

Хочу запустить эту программы, чтобы стартовала при запуске системы через screen. Прошу помощи сообщества.

Оффлайн andytux

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 6896
    • Просмотр профиля
Re: Как добавить скрипт в автозагрузку Ubuntu 18.04
« Ответ #11 : 27 Января 2019, 10:49:01 »
Цитировать
запустить эту программы, чтобы стартовала при запуске системы через screen
А screen как запускается?

Оффлайн victor00000

  • Старожил
  • *
  • Сообщений: 15568
  • Глухонемой (Deaf)
    • Просмотр профиля
Re: Как добавить скрипт в автозагрузку Ubuntu 18.04
« Ответ #12 : 27 Января 2019, 15:31:44 »

#!/bin/bash
. ./script-1.sh
. ./script-2.sh
. ./script-3.sh
. ./script-4.sh

echo "OK."
exit

правильно?

~/.xprofile
« Последнее редактирование: 27 Января 2019, 15:36:29 от victor00000 »
Wars ~.o

Оффлайн MooSE

  • Старожил
  • *
  • Сообщений: 1116
    • Просмотр профиля
Re: Как добавить скрипт в автозагрузку Ubuntu 18.04
« Ответ #13 : 30 Января 2019, 14:52:27 »
На тему /etc/rc.local:

Есть "rc-local.service" из пакета systemd. Описан в файле "/lib/systemd/system/rc-local.service". Позволю себе привести его листинг:

[Unit]
Description=/etc/rc.local Compatibility
Documentation=man:systemd-rc-local-generator(8)
ConditionFileIsExecutable=/etc/rc.local
After=network.target

[Service]
Type=forking
ExecStart=/etc/rc.local start
TimeoutSec=0
RemainAfterExit=yes
GuessMainPID=no


Т.е. ничего никуда не пропало и если специальный сервис в systemd, который проверяет наличие /etc/rc.local и он есть - выполняет его.

Оффлайн OptionBase

  • Автор темы
  • Участник
  • *
  • Сообщений: 221
    • Просмотр профиля
Re: Как добавить скрипт в автозагрузку Ubuntu 18.04
« Ответ #14 : 15 Апреля 2019, 12:13:10 »
Я для себя вопрос решил таким образом:

создаем юнит-файл
sudo nano /lib/systemd/system/iptables.service
в файл пишем следующее

[Unit]
Description=My Script Service
After=multi-user.target

[Service]
Type=idle
ExecStart=/home/ubuntu/scripts/iptables.sh

[Install]
WantedBy=multi-user.target


выставляем права
sudo chmod 644 /lib/systemd/system/iptables.service
обновляем конфигурацию
sudo systemctl daemon-reloadsudo systemctl enable iptables.service

 

Страница сгенерирована за 0.068 секунд. Запросов: 23.