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 ★★★★★
()