- Ubuntu, где скрипты запуска?
- rc.local
- rc.local не может вызвать alsactl
- Автоматическая перезагрузка через определенное время openwrt
- Скрипт python в автозагрузке от имени администратора
- Не работает rc.local и rc-local.service
- /etc/rc.local кладет комп
- Debian. После обновления перестала работать автозагрузка через rc.local.
- Не работают autostart команды в systemd сервисе
- Автозагрузка в Ubuntu 16.04
- Автозагрузка Linux
- Как работает автозагрузка?
- Автозагрузка на уровне ядра
- Автозагрузка в системе инициализации
- Автозагрузка скриптов в Linux
- Автозагрузка X сервера
- Автозагрузка окружения рабочего стола
- Автозагрузка Bash
- Выводы
Ubuntu, где скрипты запуска?
Привествую! Пару дней назад перепрыгнул на бубен. Пока не привычно, есть вопросы. В других классических дистрах есть rc.local куда я мог прописать команду, маршрут, да что угодно. А у Ubuntu (v18.04) что стартует в последнюю очередь? Например мне нужно после загрузки сетевых интерфейсов, прописать запуск маршрута
rc.local
Мне нужно запускать два сервиса при старте Raspberry Pi с Raspbian(по сути дебиан, отличий мало).Автозапуск сервисов не работает, несмотря на то что руками все запускается. Я решил запускать их с помощью rc.local. При запуске rc.local стартует и даже что то делает, однако сервисы все равно не запускаются. При запуске rc.local руками все работает нормально. В чем дело?
rc.local не может вызвать alsactl
У меня есть нужда вызывать команду «/usr/sbin/alsactl –file /home/rainbow/bin/asound.state restore» при запуске системы. Я ее добавил в /etc/rc.local . На моем ноуте при перезапуске сбрасываются настройки alsa. Их можно восстановить в alsamixer или сохранить нужные настройки в файл и загружать их с помощью alsactl. Я хочу загружать настройки alsa при загрузке системы. В консоли этот вызов успешен, но rc.local не вызывает его(не обновляются настройки). Почему?
Вот мой rc.local:
/usr/sbin/alsactl –file /home/rainbow/bin/asound.state restore
Автоматическая перезагрузка через определенное время openwrt
Подскажите, пожалуйста, как можно организовать автоматическую перезагрузку роутера на openwrt? У меня rc.local прописаны команды. Последними тремя командами идут rsync &, sleep 3600 и reboot. Роутер перезагружается через 5 минут после отработки rsync. Пробовал вместо двух команд после rsync писать reboot -d 3600, reboot -d 60m или reboot -d 1h. Эффект одинаковый, ровно через 5 минут после «rsync &» роутер перезагружается. Cron в openwrt не работает, я думаю об этом все в курсе, с кроном перезагрузка впадает в цикл каждые 30 секунд из-за отсутствия батарейки. Кто может что-нибудь посоветовать? Куда смотреть. Буду крайне благодарен.
Скрипт python в автозагрузке от имени администратора
Привет, не могу добавить скрипт в автозагрузку. Уже перепробовал все варианты, которые смог найти. понятное дело, что я делаю что-то не так… один способ через rc.local почти работает, но только если его запустить вручную sudo sh /etc/rc.local . суть в том, наверное, что он не запускается от имени администратора сам. тк если его запустить без sudo, он тоже не будет работать. Вот что лежит в rc.local:
в терминале тоже не все гладко, скрипт включается вручную, но выдает это:
что я делаю не так?
Не работает rc.local и rc-local.service
У меня на сервере в Ubuntu 14.04 не было файла rc.local и сервиса. По этой инструкции создал файлы rc.local и rc-local.service и заполнил их как в образце. Выдал им права. Но, когда пытаюсь запустить rc.local получаю ошибку:
Когда пытаюсь запустить rc.local.service ошибка:
Смотрю статус rc.local.service:
Помогите. Как это исправить? Мне нужен автозапуск чтобы запустить на сервере дополнительные скрипты против DDOS.
/etc/rc.local кладет комп
Есть заказчик к которому я подключаюсь удаленно по java iKVM Viewer. У меня задача запустить сервер (AggreGate, это интеграционная платформа) в автозапуске. Сервер может загружаться только с правами суперпользователя. В /etc/rc.local я записываю строку /opt/AggreGate/ag_server. После перезагрузки сервер запускается, но на java iKVM Viewer пустота (NO SIGNAL). Я вырубаю сервер через удаленный клиент и система загружается полноценно. т.е. на java iKVM Viewer появляется рабочий стол. Я предполагаю, что это происходит т.к. загрузка происходит до полной загрузки системы и идет ожидание завершения загрузки сервера AG, но сервер не вырубается никогда. Т.е. он вдет логи, работает и т.д., нет момента завершения работы сервера, а значит система будет ждать завершения загрузки сервера вечно. Так ли я понимаю механизм автостарта /etc/rc.local? Как мне запустить при старте сервер от имени админа так, что бы и система загружалась польностью?
Debian. После обновления перестала работать автозагрузка через rc.local.
Доброго времени суток! До нынешнего момента был создан файл rc.local и прописан как сервис. В него были вписаны команды, например, для включения свапа (sudo swapon. ) А также включение vnc через скрипт. Все работало. На данный момент swap включается, а vnc — нет. Если запустить его (vnc) вручную, например, через SSH — все работает.
В чем заключается проблема? Я понимаю, что можно изменить методику автозагрузки и все, наверное, заработает, но так было удобно.
Не работают autostart команды в systemd сервисе
Создал вручную сервис со следующим содержимым:
Создал соответствующий файл:
Куда вставил 3 команды, на выключение свопа (включаю вручную при необходимости), отключение APM (чтобы головки жесткого диска не парковались) и замену TTL (для использования телефона в качестве модема). Сервис запустил, включил, статус проверил, все работает, для теста еще добавил команду mkdir /tst. Перезагрузился, в логе увидел сообщение об успешном выключении APM, папка создалась, все вроде бы хорошо. Но когда система уже загрузилась, smartcontrol показал что APM до сих пор включен, TTL тоже не изменился, таким образом корректно отработали только 2 команды: на выключение свопа и создание папки. Почему отключение APM и смена TTL могут не работать?
Автозагрузка в Ubuntu 16.04
Приветствую. С линуксом никогда не работал, знания близки к нулю.
Источник
Автозагрузка Linux
После запуска компьютера, как правило, нам приходится запускать некоторые программы. которыми мы пользуемся чаще всего. Также после запуска системы нам может понадобиться выполнить какие-либо специфичные действия, например, создать нужные файлы или установить некоторые параметры. Очень неудобно делать это вручную. Для решения таких задач существует автозагрузка.
В этой статье мы рассмотрим как работает автозагрузка Linux, как добавить программы автозагрузки, куда их будет более правильно добавить, а также какие виды автозагрузки бывают в этой операционной системы.
Как работает автозагрузка?
Чтобы понять как работает автозагрузка, сначала нужно вспомнить, что происходит во время процесса загрузки Linux. Как только ядро завершит свою инициализацию и будет готово к дальнейшей работе, оно передаст управление системе инициализации. Система инициализации — это основной процесс, именно он запускает все другие процессы в системе.
Есть процессы, которые система инициализации, например, systemd, запускает по умолчанию, но также вы можете настроить чтобы она запускала нужные вам процессы. Также многими дочерними процессами выполняются файлы скриптов или имеется та или иная возможность запускать необходимые вам программы. Такая возможность есть и у большинства окружений рабочего стола.
Рассмотрим основные уровни автозагрузки которые вы можете использовать:
- Автозагрузка на уровне ядра — вы можете указать любую программу, которая будет запускаться после старта ядра вместо системы инициализации;
- Автозагрузка системы инициализации — запуск основных системных сервисов, дополнительных сервисов, а также ваших скриптов на этапе инициализации системы;
- Автозагрузка rc.local — устаревший метод загрузки скриптов, выполняется перед запуском графического окружения;
- Автозагрузка менеджера входа — вы можете выполнять свои скрипты или команды после запуска менеджера входа, но перед запуском окружения;
- Автозагрузка X сервера — запуск нужных программ или скрпитов сразу после старта X сервера;
- Автозагрузка окружения — большинство окружений поддерживают автозагрузку программ, там даже можно настроить отложенный запуск и другие параметры;
- Автозагрузка bash — самый последний вариант — это автозагрузка на уровне отдельной командной оболочки, вы можете выполнять нужные команды автоматически, как только будет запущен терминал.
Дальше мы рассмотрим более подробно как использовать каждый из пунктов для автозагрузки программ, скриптов или выполнения команд в Linux.
Автозагрузка на уровне ядра
Автозагрузка на уровне ядра вряд ли будет вам очень полезной для повседневного применения, но я решил о ней упомянуть, поскольку такая возможность есть. С помощью параметра ядра init вы можете указать какую программу стоит запускать сразу после завершения инициализации ядра. Например, вы можете загрузить оболочку Bash вместо Systemd. Для этого достаточно подправить строку запуска ядра в конфигурационном файле Grub или во время запуска. Добавьте в конец параметр init:
sudo vi /boot/grub2/grub.cfg
linux /vmlinuz-4.8.0-22-generic root=/dev/mapper/systems-ubuntu ro quiet init=/bin/bash
Но, обычно, удобнее изменить это значение временно, в меню Grub. Читайте подробнее об этом в статье параметры ядра Linux. Так не выполняется автозагрузка программы linux, но, тем не менее, иногда может быть полезно.
Автозагрузка в системе инициализации
Чаще всего, когда говорится автозагрузка Linux, подразумевается именно автозагрузка сервисов с помощью системы инициализации. В systemd очень продвинутая система управления службами. Здесь поддерживается разрешение зависимостей, параллельный запуск, отсрочка запуска и перезапуск при ошибке. В терминологии Systemd все запускаемые программы представлены файлами юнитов, в каждом юните описаны параметры программы, ее исполняемый файл, а также дополнительные требования к запуску.
Для добавления или удаления служб из автозапуска используется команда systemctl. Чтобы добавить службу в автозапуск выполните:
sudo systemctl enable имя_службы
А чтобы отключить ее автозапуск linux:
sudo systemctl disable имя_службы
Например, если вы хотите добавить в автозагрузку Apache, то нужно выполнить:
sudo systemctl enable apache
Также вы можете проверить добавлена ли уже служба в автозагрузку:
sudo systemctl is-enabled httpd
Если вы не знаете точное имя файла сервиса, но знаете его первую букву, то можно использовать автодополнение, как и в любом другом месте терминала с помощью кнопки Tab:
Также вы можете посмотреть все сервисы, которые были добавлены в автозагрузку с помощью команды:
systemctl list-unit-files | grep enabled
Автозагрузка скриптов в Linux
Раньше было принято размещать все скрипты, которые запускаются по умолчанию в файле /etc/rc.local. Этот файл все еще существует, но это пережиток системы инициализации SysVinit и теперь он сохраняется только для совместимости. Скрипты же нужно загружать только с помощью Systemd.
Для этого достаточно создать простой юнит-файл и добавить его в автозагрузку, как любой другой сервис. Сначала создадим этот файл:
sudo vi /lib/systemd/system/runscript.service
[Unit]
Description=My Script Service
After=multi-user.target
[Service]
Type=idle
ExecStart=/usr/bin/local/script.sh
[Install]
WantedBy=multi-user.target
В секции Unit мы даем краткое описание нашему файлу и говорим с помощью опции After, что нужно запускать этот скрипт в многопользовательском режиме (multi-user). Секция Service самая важная, здесь мы указываем тип сервиса — idle, это значит, что нужно просто запустить и забыть, вести наблюдение нет необходимости, а затем в параметре ExecStart указываем полный путь к нашему скрипту.
Осталось выставить правильные права:
sudo chmod 644 /lib/systemd/system/runscript.service
Затем обновить конфигурацию и добавить в автозагрузку Linux новый скрипт:
sudo systemctl daemon-reload
sudo systemctl enable myscript.service
После следующей перезагрузки этот скрипт будет запущен автоматически. Обратите внимание, что для каждого скрипта, который вы собираетесь запускать должны быть правильно выставлены права, а именно нужно установить флаг выполнения. Для этого используйте команду chmod:
sudo chmod u+x /usr/local/bin/script
В параметрах мы передаем утилите адрес файла скрипта. Исполняемость — это обязательный параметр для всех способов.
Автозагрузка X сервера
Часто, в легких окружениях рабочего стола и оконных менеджеров для автозагрузки программ используется автозагрузка на уровне X сервера. Все запускаемые, таким образом, скрипты будут стартовать после запуска X сервера. Чтобы настроить такую автозагрузку Linux вам будет достаточно добавить путь к нужному скрипту в файл
/.xinitrc или /etc/X11/xinit/xinitrc. Синтаксис добавляемой строки таков:
exec путь_к_скрипту &
/.xinitrc еще не существует, то его нужно создать:
Затем, чтобы добавить в автозагрузку linux скрипт, отредактируйте файл так, как вам нужно. Например, будем запускать Firefox:
Готово. Осталось сохранить изменения. При следующем запуске X сервера сработает автозапуск Linux и выполняется эта команда. Таким же способом может выполняться автозапуск приложений linux.
Автозагрузка окружения рабочего стола
Такие мощные окружения рабочего стола как Gnome и KDE имеют свои приложения для автозагрузки. Например, в Gnome программа называется «Запускаемые автоматически приложения». Вы можете запустить ее из главного меню системы:
Здесь вы видите все программы, которые уже добавлены в автозагрузку. Вы можете отключить каждую из них просто сняв галочку.
Чтобы добавить новую программу или скрипт в автозагрузку нажмите кнопку «Добавить»:
Тут вам нужно заполнить три поля:
- Имя — произвольное имя для команды, по которому вы сможете ее найти;
- Команда — полный путь к исполняемому файлу программы;
- Комментарий — дополнительная информация, указывать необязательно.
Дальше нажмите «Добавить» ваша программа появится в списке. При следующей загрузке системы, будет выполняться автозагрузка программ linux.
Автозагрузка Bash
Самый простой автозапуск скрипта linux — это запуск с помощью bashrc. Ваш скрипт или команда будет выполняться каждый раз, когда запускается новая сессия терминала. Для этого добавьте адрес нужного скрипта в файл
/usr/bin/local/script
export MYWAR=test
Здесь вы можете запускать на выполнение любые скрипты или команды. Часто такой подход используется для создания псевдонимов команд, объявления новых переменных и собственных функций.
Выводы
В этой статье мы рассмотрели добавление в автозагрузку linux, а также как работает автозагрузка и ее виды. Конечно, существует множество других файлов, куда бы вы могли пристроить свой скрипт, но это будет неправильно. Нужно использовать только предназначенные для этого методы, хотя бы потому, чтобы потом не забыть. Если у вас остались вопросы, спрашивайте в комментариях!
Источник