Вопрос или проблема
Я пытался создать очень простой скрипт для автозагрузки, но что бы я ни делал, он не запускается при загрузке. Для простоты, пока я тестировал, я просто хотел открыть мой браузер, что прекрасно работает при ручном выполнении скрипта. Я использую Ubuntu 22 LTS. Сам скрипт выглядит следующим образом и называется:
#!/bin/bash
google-chrome
Я пробовал всё: от размещения скрипта в home/user и именования его startup.sh, до того, чтобы попытаться выполнить его через cronjob с использованием @reboot или с помощью init.d, а позже даже пытался написать службу systemd. НИЧЕГО НЕ РАБОТАЕТ. Как может быть, что у меня уходит несколько дней на гугление, и ничего не работает? Я уже пробовал следующие руководства и инструкции по устранению неполадок:
https://www.baeldung.com/linux/run-script-on-startup
https://medium.com/@girishbhasinofficial/configuring-a-script-to-run-at-startup-on-ubuntu-22-04-ffe1f3e649d1
https://www.squash.io/executing-bash-script-at-startup-in-ubuntu-linux/
https://linuxconfig.org/how-to-run-script-on-startup-on-ubuntu-20-04-focal-fossa-server-desktop
https://stackoverflow.com/questions/12973777/how-to-run-a-shell-script-at-startup
Кажется, вы не хотите запускать это при загрузке, а как только начинается ваша графическая сессия; и в этом вся сложность.
Все методы, которые вы пробовали, запускают вещи, вырванные из контекста графической сессии, в которой вы находитесь.
Это не может сработать! Вам нужно запускать браузер из контекста работающей графической среды. Как браузер будет отображать что-либо, не зная, где (и имея разрешение) отображать окно? Как он получит ввод с клавиатуры и мыши, будет воспроизводить звук?
Таким образом, эти методы, которые вы нашли, все предназначены для другой ситуации.
Кстати, ваша графическая среда имеет “программы автозагрузки” или “автозапуск” или аналогичный инструмент настройки. (KDE, Gnome, XFCE4, Cinnamon, MATE и т.д. Все это делают! Так что есть что-то, на что вы можете нажать, чтобы решить эту проблему, если вы не используете что-то очень странное/кастомное, но тогда вы, вероятно, не тот тип пользователя, которому нужна помощь с этим, никаких обид не подразумевается!).
Если в этом центре настройки нет, в ~/.config/autostart/
вы можете поместить .desktop
файлы.
Например, я запускаю свой менеджер паролей вот так: есть файл с именем mypasswordmanager.desktop
[Desktop Entry]
Name=KeePassXC
GenericName=Password Manager
Exec=keepassxc
TryExec=keepassxc
Terminal=false
Type=Application
Таким образом, каждый раз, когда начинается моя графическая пользовательская сессия, мой менеджер паролей (keepassxc
) также запускается. Я уверен, что вы можете изменить это, чтобы запустить ваш браузер – или просто скопировать файл .desktop
вашего браузера, например, из /usr/share/applications/org.mozilla.firefox.desktop
в ваш ~/.config/autostart
.
Что касается ваших источников:
-
Baeldung: известен низким качеством контента, вероятно, в основном сгенерированным ИИ бредом, обычно смешивает вещи, которые были уже стары 20 лет назад, с современными вещами, которые не совсем работают, как описано. Статья, на которую вы ссылались, является отличным примером этого. Я бы рекомендовал заблокировать этот сайт из ваших поисковых результатов.
-
случайный пост в Medium: увы, этот человек копирует Baeldung.
-
squash.io: статья начинается с машинно-сгенерированной стоковой картинки. Вы можете закрыть ее на этом этапе. Ожидать полезного контента больше не следует. (Я знаю, что это звучит цинично, но ни разу я не нашел то, что искал, и что было бы точным в таких статьях. Их пишут, чтобы получать показы страниц через поиск Google, а не чтобы помочь людям. ВЫ ЧЕЛОВЕК! Не тратьте свое время на чтение текста, который никто даже не потрудился написать изначально, а просто позволил ИИ написать за них. ИИ ужасно разбираются в технологиях; они могут хорошо поддерживать разговор, но в принципе не понимают, о чем пишут.)
-
статья на linuxconfig: не идеально, но она очень хорошо проиллюстрирована, и кто-то позаботился объяснить, что они делают! Обратите внимание, что статья касается запуска скрипта, а не браузера, при загрузке? И обратите внимание, что она, похоже, только ждет, пока сеть станет доступной, а не графический интерфейс!
-
stackoverflow: так вы нашли статью на linuxconfig.
Ответ или решение
Почему скрипт не запускается при загрузке в Ubuntu 22 LTS?
Вы сталкиваетесь с проблемой, когда простой скрипт для запуска браузера не исполняется при запуске системы Ubuntu 22 LTS, и это может быть крайне разочаровывающим. Давайте разберемся в вашей ситуации, рассмотрим возможные причины и предложим корректное решение.
Природа проблемы
Ваш скрипт:
#!/bin/bash
google-chrome
работает корректно при ручном запуске, однако не запускается автоматически при загрузке. Проблема заключается в том, что вы пытаетесь запустить браузер из контекста, который не является графическим окружением рабочего стола. Скрипты, запускаемые при загрузке через cron или init.d, запускаются в контексте системы без графического интерфейса.
Решение: Использование автоматического запуска в графическом окружении
Вместо использования cron или systemd для запуска вашего скрипта следует воспользоваться возможностями вашего графического окружения для автоматического запуска приложений. В большинстве современных интерфейсов, таких как Gnome, KDE, XFCE и других, существует встроенный инструмент для управления автозагрузкой приложений.
Шаги для настройки автозагрузки
- Создание .desktop файла:
В каталоге~/.config/autostart/
необходимо создать файл с расширением.desktop
, чтобы настроить автозапуск вашего браузера.
Вот пример содержания файла для Google Chrome:
[Desktop Entry]
Type=Application
Exec=google-chrome
Hidden=false
NoDisplay=false
X-GNOME-Autostart-enabled=true
Name[en_US]=Google Chrome
Name=Google Chrome
Comment[en_US]=Start Google Chrome on login
Comment=Start Google Chrome on login
-
Сохранение файла:
Сохраните этот файл какgoogle-chrome.desktop
в директории~/.config/autostart/
. -
Проверка разрешений:
Убедитесь, что файл.desktop
имеет скрываемые разрешения, чтобы он мог исполняться. Это можно сделать с помощью команды:chmod +x ~/.config/autostart/google-chrome.desktop
Альтернативное решение: Использование графического интерфейса
Если вы предпочитаете не редактировать файлы вручную, вы можете воспользоваться графическим интерфейсом, чтобы добавить приложение для автозапуска через настройки системы:
- Откройте "Настройки" вашего рабочего стола.
- Найдите раздел "Программы автозагрузки" или "Автозагрузки".
- Добавьте новое приложение и укажите
google-chrome
как команду.
Заключение
Запуск браузера по автозагрузке в Ubuntu требует выполнения всего процесса в контексте графического окружения, а не в контексте командной строки или системной службы. Мы рекомендуем использовать .desktop
файлы в каталоге ~/.config/autostart/
для автоматического запуска ваших приложений при входе в систему.
Если, несмотря на выполненные шаги, проблемы всё же остаются, проверьте системные логи (например, с помощью команды journalctl
) на предмет ошибок, связанных с автозагрузкой, чтобы получить дополнительные подсказки о возможных причинах неполадок.