LINUX.ORG.RU

Запуск xprintidle из rc.local

 , ,


0

1

Есть у меня скрипт /home/user/.dwm/scripts/startup/system.sh в котором запуск всяких разных команд, который запускает /etc/rc.local и есть скрипт 02_idle_shutdown.sh, который запускается после старта dwm(autostart.sh). Но дело в том, что если включить комьютер и не авторизоваться в xdm(запустить dwm), то скрипт 02_idle_shutdown.sh не запустится и не переведет систему в standby по таймеру т.е она будет работать постоянно. Я такой, а может запустить этот скрипт ДО запуска dwm?

Добавил в /home/user/.dwm/scripts/startup/system.sh

CMD=$(which bash)
if [[ ! -z ${CMD} ]]; then
    sudo -E -u user ${CMD} "${PROFILE_USER_HOME}/.dwm/scripts/startup/daemon/02_idle_shutdown.sh >/dev/null" 2>&1 &
fi

И…он не запускается. Т.е, если открыть консольку рута и выполнить /etc/rc.local или сd /home/user/.dwm/scripts/startup && ./system.sh, то 02_idle_shutdown.sh запустится, а при загрузке /etc/rc.local –> /home/user/.dwm/scripts/startup/system.sh - нет

Внутри 02_idle_shutdown.sh –> xprintidle

★★★

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

Это и есть ответ - сначала исправь ту дичь, которую ты там устроил, а потом, если проблема сама собой не исчезнет, уже можно смотреть.

Поясню: у тебя в $HOME лежит кусок системного скрипта (rc.local), так делать нельзя. А чтобы ещё добавить идиотизма, ты его положил в директорию конфига оконного менеджера.

Ни в коем случае ничего в $HOME не должно выполняться от рута. И крайне желательно чтобы вообще никак не упоминалось нигде в /etc, но если никак по-другому не можешь - надо запускать только через su username -c "/home/username/.....sh". И конечно же расположить файлы в нормальных местах, rc.local никакого отношения к оконному менеджеру не имеет.

Что за 02_idle_shutdown и кто его и как запускает (и что за autostart.sh) - из твоего описания не понятно. Подозреваю что там тоже какая-то чушь.

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

Всё можно упростить: /etc/rc.local запускает 02_idle_shutdown.sh, внутри которого xprintidle с помощью

sudo -E -u user /bin/bash "${PROFILE_USER_HOME}/.dwm/scripts/startup/daemon/02_idle_shutdown.sh >/dev/null" 2>&1 &

Если запустить из-под рута в tty

sudo -E -u user /bin/bash "${PROFILE_USER_HOME}/.dwm/scripts/startup/daemon/02_idle_shutdown.sh

То он запустится, если перезагрузиться, то система через rc.local не запускает 02_idle_shutdown.sh

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

Поясню: у тебя в $HOME лежит кусок системного скрипта (rc.local), так делать нельзя. А чтобы ещё добавить идиотизма, ты его положил в директорию конфига оконного менеджера.

У меня в конфиге оконного менеджера лежат скрипты запуска каких-то демонов, которые запускаются от юзера, а не от рута. От рута запускается rc.local и дочерний скрипт system.sh, который запускает сервисы. Почему я должен запуск скриптов хранить в rc.local?

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

cat /home/user/.dwm/scripts/startup/daemon/02_idle_shutdown.sh

echo pre >> /home/user/temp.txt
sudo -E -u user bash -c "DISPLAY=:0 XAUTHORITY=/home/user/.Xauthority xprintidle" >> /home/user/temp.txt
# env >> /home/user/temp.txt
echo post >> /home/user/temp.txt

Если не залогинится в xdm - то xprintidle не отдает результат работы. Хотя, xorg же в это время запущен. Значит чего-то ему надо для запуска

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

Ты определись - это конфиг оконного менеджера, или это ветка rc.local. Это совсем разные вещи, ты их кажется путаешь друг с другом и от этого все проблемы. Если конфиг оконного менеджера - запускай их оконным менеджером и убери все упоминания из etc. Если ветка rc.local - перенеси в нормальное место без упоминания оконного менеджера, и вопрос «если залогиниться/не залогиниться в гуи» уйдёт сам собой.

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

Поскольку ты хочешь чтоб он работал до логина - то очевидно оконный менеджер и $HOME тут совершенно ни при чём, убери из скрипта все упоминания юзера и его директорий!

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

Только что посмотрел какие env до логина в WM и после из-под 02_idle_shutdown.sh. При этом до логина - не работает xprintidle, а после - работает. Значит причина не в том, как расположены скрипты, а в самом xprintidle. Сказки тут рассказываешь

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

Ты какой-то тупой. Я про env ничего не писал, повторю ещё раз может дойдёт:

1) пойми, что системные загрузочные скрипты и конфиг оконного менеджера - это совершенно разные вещи и прекрати их путать и перемешивать

2) системные загрузочные скрипты не должны ничего знать ни про каких юзеров и их домашние директории, а если вдруг это неизбежно - то как минимум запускать их содержимое только переключаясь на соответствующего юзера, и естественно без упоминаний оконного менеджера

3) если ты хочешь чтоб оно работало до логина - то точно забудь про юзеров, вообще не смотри никуда в /home

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

Ты какой-то тупой. Я про env ничего не писал, повторю ещё раз может дойдёт:

  1. Ты же понимаешь, что организация скриптов до решения проблемы никакого дела не имеет? Куда ты не положи скрипт 02_idle - он работать не будет

  2. организация скриптов - дело лично каждого. Мне удобней в репе .dwm держать все запускающиеся скрипты, а не где-то еще. Притом все скрипты - демоны внутри иксов из-под пользователя. Почему это они должны быть где-то в etc?

  1. если ты хочешь чтоб оно работало до логина - то точно забудь про юзеров, вообще не смотри никуда в /home

Это вообще какой-то набор слов. Причем тут до «логина» и «про юзеров»?

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

Последний раз повторяю - сначала исправь помойку а потом можно и разобраться с проблемами, если они после исправления помойки останутся (в чём я сомневаюсь).

Это вообще какой-то набор слов. Причем тут до «логина» и «про юзеров»?

Прочти собственный вопрос, ты там про логин (авторизацию) писал, напряги чуть мозги и свяжи эти два слова.

Если будешь дальше присылать какие-то споры вместо выполнения рекомендаций - отвечать больше тут не буду.

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

Значит чего-то ему надо для запуска

Видимо, $DISPLAY, $XAUTHORITY и прочее иксовое барахло. То, что у тебя где-то там есть процесс Xorg, никого не волнует, мало ли где и зачем он есть. Погугли как пишутся правила udev для выполнения в контексте X11-сессии, там все грабли разобраны.

anonymous
()