Почему это не завершит работу работы сценария при выполнении ACPID?

Я выяснил, какой libc моя система использовала. В моем случае это было eglibc это, перекрестная компиляция с openembedded для Ангстрема 2012.05, является выбором по умолчанию. Перекрестная компиляция для eglibc решает этот вопрос.

Я записал эту следующую часть только для ссылки, потому что я спросил bitbake список рассылки, и я не сделал нашел что-либо об этом на Google: пересечь компиляцию для uclibc набор ANGSTROMLIBC = "uclibc" в conf файле (как указано на этих часто задаваемых вопросах). uclibc не должен быть скомпилирован непосредственно, но это будет создано при выполнении bitbake рецепта на источнике, и упакованный под/tmp/deploy/подкаталогами, обычно в том же каталоге пакета.

3
18.08.2013, 21:22
1 ответ

Таким образом, после некоторой работы отладки мне наконец удалось прослеживать проблему до пользовательского обнаружения pinky. По некоторой нечетной причине pinky -fw не перечислит пользовательский дисплей при нормальных обстоятельствах. Только после запуска корневой сессии это может обнаружить требуемый дисплей:

# DEBUG OUTPUT WITHOUT ROOT SESSION

##################
displaynum: 0  # correct
##################
pinkyfw: bob       tty7     04:09  Aug 18 17:59
pinky: Login    Name                 TTY      Idle   When         Where
bob      Bob                  tty7     04:09  Aug 18 17:59              # notice the missing
##################                                                      # information on display used
pinkytest: bob # testing a workaround
user: # empty because awk didin't find a match for ":0" in pinky -fw
##################

# DEBUG OUTPUT WITH ROOT SESSION

##################
displaynum: 0 # correct
##################
pinkyfw: bob       tty7     04:04  Aug 18 17:59
bob       pts/3           Aug 18 21:59 :0
pinky: Login    Name                 TTY      Idle   When         Where
bob      Bob                  tty7     04:04  Aug 18 17:59
bob      Bob                  pts/3           Aug 18 21:59 :0          # after starting a root session
##################
pinkytest: bob
user: bob # awk found a match for ":0"
##################

# DEBUG OUTPUT WITHOUT ROOT SESSION, WORKAROUND APPLIED

##################
displaynum: 0  # correct
##################
pinkyfw: bob       tty7     04:09  Aug 18 17:59
pinky: Login    Name                 TTY      Idle   When         Where
bob      Bob                  tty7     04:09  Aug 18 17:59              
##################                                                      
pinkytest: bob 
user: bob
##################

Это - обходное решение, которое я применил:

getXuser() {
        user=`pinky -fw | awk '{ if ($2 == ":'$displaynum'" || $(NF) == ":'$displaynum'" ) { print $1; exit; } }'`
        if [ x"$user" = x"" ]; then
                startx=`pgrep -n startx`
                if [ x"$startx" != x"" ]; then
                        user=`ps -o user --no-headers $startx`
                fi
        fi
        if [ x"$user" = x"" ]; then                           # lines added
               user=$(pinky -fw | awk '{ print $1; exit; }')  # lines added
        fi                                                    # lines added
        if [ x"$user" != x"" ]; then
                userhome=`getent passwd $user | cut -d: -f6`
                export XAUTHORITY=$userhome/.Xauthority
        else
                export XAUTHORITY=""
        fi
        export XUSER=$user
}

К сожалению, я не делаю теперь достаточно о pinky и управление пользователями в соответствии с Linux, чтобы смочь сказать, могло ли это обходное решение создать еще больше проблем. Я предполагаю, что это лучше, чем просто жесткое кодирование имя пользователя и дисплей в файл (который даже не работал, когда я попробовал).

0
27.01.2020, 21:44

Теги

Похожие вопросы