LINUX.ORG.RU

Запуск скрипта при старте

 , ,


0

1

Здравствуйте. Помогите разобраться. Есть скрипт:

#!/bin/bash
xmodmap -e "remove Control = Control_L"
xmodmap -e "remove Control = Control_R"
xset s off
xset s 0
ret=$(ps aux | grep [c]hromium | wc -l)
echo $ret
if [ "$ret" -le 4 ]
    then {
	chromium-browser --incognito --kiosk "/home/site/index.html" &
	exit 1
    }
else
    {
	exit 1
    }
fi;

В crontab написал:

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
DISPLAY=:0.0
@reboot /bin/sh /home/info/scripts/run
* * * * * /bin/sh /home/info/scripts/run
Дальше начинаются чудеса. Хром запускается, но контролы работают. Если хром убить, то через минуту он перезапускается и контролы уже не пашут. Как сделать чтобы xset c xmodmap работали при старте?


Скорее всего у тебя скриптота отрабатывает ещё до того, как поднимается графическая сессия, потому они ничего не делают, так как делать нечего и негде.

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

Внутри графической сессии, так как иначе ты никак не отловишь наличие сессии, ибо переменные типа DISPLAY можно назначить и вне сессии. Можешь, конечно, попытаться отловить иксы по dbus, но в этом плане я тебе вряд ли что подскажу дельного.

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

Скрипт сам по себе, без крона, работает? Если да и вы не торопитесь, то может помочь банальный sleep с полминуты в начале скрипта. Ну и убедитесь еще, что с путями и правами нет особенностей. Скрипт и скрипт в кроне - это не совсем одно и то же

vaddd ★★ ()

Ну... Я в таких случаях отключал «системный» запуск иксов и запускал иксы в рамках скрипта.

Ещё рекомендую поизучать программку /bin/nohup - полезна в таких случаях.

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

Попробуйте в скрипте написать полные пути к xset и остальным. /bin/.../xset

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

Самое интересное что Хром запускается. И через минуту отключаются клавиши. Т.е. часть скрипта запускается, а часть при втором запуске. Полные пути к xset не помогают - это я первое что попробовал. Я не понимаю почему хром то запускается, а остальное со второго раза.

Terni ()

а гре гарантия, что иксы уже запущены?

может стоит использовать систему инициализации

anonymous ()

2 вопроса - почему в crontab?
reboot - что перегружает?
Работу хрома или компуктер? Если компуктер, то для отработки в /etc/rc.local запихни или в .bash_login.
Схема запуска к тебя какая?

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

Зачем костылять, если вон всего 10 минут назад дал хороший протез?

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

Это я так понимаю тоже sleep только хитрый. Сделал в crontab sleep 61 вроде пока работает. Так что костыляем дальше, норм велосипеда пока не нашел :)

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

Это я так понимаю тоже sleep только хитрый.

Нет. Это проверка запуска X-ов. То что там exit - так это сама идея всего скрипта такая уродская, я лишь повторил её.

Сделал в crontab sleep 61

А почему не 59? Это самое уродское, что можно придумать.

vodz ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.