LINUX.ORG.RU

Автозапуск bash через systemd

 ,


0

1

Пытаюсь запустить браузер гугл хром с открытием страницы яндекс. ОС дебиан.

Для этого сделал сам bash код с названием start_chrome_kiosk.sh:

#!/bin/bash
CHROME_PATH="/usr/bin/google-chrome-stable"  
START_URL="https://ya.ru/"
# Запуск OpenAI Chrome в режиме киоска
$CHROME_PATH \
    --kiosk \
    --no-first-run \
    --disable-infobars \
    --disable-session-crashed-bubble \
    --disable-features=Translate \
    "$START_URL"

Прописал chmod +x ~/start_chrome_kiosk.sh Запустил ~/start_chrome_kiosk.sh Все работает.

Далее добавляю в systemd Создал файл по пути sudo nano /etc/systemd/system/chrome-kiosk-script.service

Со следящим содержимым:

[Unit]
Description=Launch OpenAI Chrome in Kiosk Mode (Script)
After=network.target graphical.target

[Service]
User=linoxide
WorkingDirectory=/home/linoxide
ExecStart=/home/linoxide/start_chrome_kiosk.sh
Restart=on-failure
RestartSec=10


[Install]
WantedBy=multi-user.target

Далее

sudo systemctl enable chrome-kiosk-script.service
sudo systemctl start chrome-kiosk-script.service

И ни чего не запустилось.

linoxide@debian:~$ sudo systemctl restart chrome-kiosk-script.service
linoxide@debian:~$ sudo systemctl status chrome-kiosk-script.service
● chrome-kiosk-script.service - Launch OpenAI Chrome in Kiosk Mode (Script)
     Loaded: loaded (/etc/systemd/system/chrome-kiosk-script.service; enabled; vendor preset: enabled)
     Active: activating (auto-restart) (Result: exit-code) since Sat 2025-01-18 02:03:03 AEDT; 3s ago
    Process: 14419 ExecStart=/home/linoxide/start_chrome_kiosk.sh (code=exited, status=1/FAILURE)
   Main PID: 14419 (code=exited, status=1/FAILURE)
        CPU: 55ms


Последнее исправление: Alex_Golubev (всего исправлений: 4)

Ты понимаешь отличие консоли от графической оболочки?

kostik87 ★★★★★
()

Так не получится. Стартуй скрипт из гуёв.

papin-aziat ★★★★★
()

Думаю тебе надо создать пользовательский юнит, который будет запускаться после логина, а в Wanted прописать WantedBy=graphical.target или какой-то похожий, который есть у тебя в системе.

masa
()

В unit-файле нет переменных окружения. Можно попробовать #!/usr/bin/env bash, но не факт, что сработает, мало ли какие установки хрому нужны.

А вообще, правильный способ это ~/.config/autostart и там dekstop-файл.

Aceler ★★★★★
()
Ответ на: комментарий от masa

Я что-то такое пытался реализовать, но systemd, ЕМНИП, ругается на отсутствие указанного target или что-то типа того. Почему-то юзерские юниты не видят системные таргеты, а гугление показало, что там надо мудрёные воркараунды мутить. Но подождём мнения экспертов.

papin-aziat ★★★★★
()

Тут нужен другой подход:

  1. Настроить lightdm или sddm на автологин под этим юзером, в какую-нибудь сессию Weston или типа того. Где ничего, кроме композитора.
  2. Создать systemd –user юнит и настроить его на автозапуск.

Вы пытаетесь запустить скрипт в никуда, нужно чтоб кто-то создал графическую сессию. И композитор поднял.

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

egzakharovich
()
Последнее исправление: egzakharovich (всего исправлений: 1)

Вот она, жертва системг+судо.

firkax ★★★★★
()

Если тебе нужно, чтобы при загрузке linux автоматически запускался хром в kiosk-режиме, то это не так делается.

В случае с вяленым установи cage, создай файл /usr/share/wayland-sessions/kiosk.desktop и пропиши туда что-то типа

Exec=dbus-run-session /usr/bin/cage chromium --kiosk

(см. другие аналогичные файлы в этой папке как пример), после чего настрой sddm/lightdm/что у тебя там (у меня например greetd) на автозапуск специфичным для него способом.

Lrrr ★★★★★
()
Ответ на: комментарий от Zeev

Создал скрипт

#!/bin/bash

# Переменные для запуска Chrome
CHROME_PATH="/usr/bin/google-chrome-stable"  # Или /usr/bin/google-chrome-beta
START_URL="https://ya.ru/"  # Замените на нужный URL


# Запуск Chrome в режиме киоска
"$CHROME_PATH" \
    --kiosk \
    --no-first-run \
    --disable-infobars \
    --disable-session-crashed-bubble \
    --disable-features=Translate \
    "$START_URL"

Сохранил и получил:

linoxide@debian:~$ nano ~/.xinitrc
linoxide@debian:~$ ls -la ~/.xinitrc
-rwxr-xr-x 1 linoxide linoxide 436 Jan 18 18:52 /home/linoxide/.xinitrc
linoxide@debian:~$

И ни чего не работает. Команда startx :

linoxide@debian:~$ nano ~/.xinitrc
linoxide@debian:~$ ls -la ~/.xinitrc
-rwxr-xr-x 1 linoxide linoxide 436 Jan 18 18:52 /home/linoxide/.xinitrc
linoxide@debian:~$ chmod +x ~/.xinitrc
linoxide@debian:~$ startx
/usr/lib/xorg/Xorg.wrap: Only console users are allowed to run the X server
Alex_Golubev
() автор топика
Ответ на: комментарий от Alex_Golubev

Если у вас при запуске компьютера открывается графический интерфейс, где вы логинетесь в систему — это Display Manager, если вы логинетесь в консольном режиме и там запускаете startx или оно запускается само — это ядерная консоль.

Zeev
()

ExecStart=/bin/bash /home/linoxide/start_chrome_kiosk.sh

fucpsy
()

Господе иисусе, что вы тут творите!

# /usr/share/wayland-sessions/chrome-kiosk.desktop
[Desktop Entry]
Name=KWin with Chrome
Comment=Starts KWin and Chrome
Exec=kwin_wayland --no-lockscreen --no-global-shortcuts --no-kactivities /usr/local/bin/chrome-kiosk-mode.sh

KWin заменить на свой wm по вкусу, в chrome-kiosk-mode.sh вписать что там хромому нужно, выбрать сессию дефолтом в DM по вкусу.

MagicMirror ★★
()
Последнее исправление: MagicMirror (всего исправлений: 1)
Ответ на: комментарий от Aceler

Я уже установил дебиан 12. А какая разница везде все одинаковое. Я думал эта плевая задача для сообщества линукса.

Alex_Golubev
() автор топика
Ответ на: комментарий от MagicMirror

Плохо понял что вы имеете введу. Можете по шагам описать?

Alex_Golubev
() автор топика
Ответ на: комментарий от Alex_Golubev

А какая разница везде все одинаковое.

Нет, где-то эта задача уже решена, где-то надо готовить самому.

Я думал эта плевая задача для сообщества линукса.

Для сообщества-то плёвая. Для тебя не очень :)

Aceler ★★★★★
()

Накидал по быстрому заготовку для киоска:

https://limewire.com/d/a0895964-6917-432b-a76b-f38fcc7178a4#NOAq_nF7qFZGt9lYhiUcw51pjiB0gqfewotEgJaIJ-0

kiosk.img

Образ виртуальной машины Debian 12.

Запуск:

./qemu_kiosk.sh

Подключится:

ssh -p 2222 root@localhost

password: root

Еще есть пользоватьель user пароль user.

systemd настроен запускать консоль

systemctl set-default multi-user.target

Далее сервисы:

/etc/systemd/system/multi-user.target.wants/xinit.service
/etc/systemd/system/multi-user.target.wants/fluxbox.service
/etc/systemd/system/multi-user.target.wants/chromium.service

Запускают киоск с chromium.

imatveev13
()
Ответ на: комментарий от imatveev13

Мне бы хватило если просто рассказали что сделали и все.

Alex_Golubev
() автор топика

Я недавно делал похожее. В итоге сделал автологин в openbox сессию, а в ~/.config/openbox/autostart вписал запуск firefox --kiosk http://127.0.0.1

А c помощью systemd у меня стартует сервис со страничкой на 127.0.0.1. Его я кстати тоже не осилил сделать автозапускаемым, поэтому в том же autostart, пишу systemctl --user start ui.service.

По идее ещё надо запретить закрывать по Alt-F4(или перезапускать после закрытия), но мне было не критично, у моего киоска клавиатуры не будет.

Loki13 ★★★★★
()
Последнее исправление: Loki13 (всего исправлений: 3)
Ответ на: комментарий от Alex_Golubev

Мы делаем киоски уже лет пять. В альте в альтераторе просто есть галка «сделать киоск» и поле для ввода, что именно запускать. Это безопасно, это удобно, сообщество всё уже сделало для нас.

Эта система, например, стоит на общественных туалетах нашего города.

Aceler ★★★★★
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.